diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties index 4e17fcce7709..f509493add05 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties @@ -19,7 +19,7 @@ instanceof.check.for.this.display.name='instanceof' check for 'this' instanceof.check.for.this.problem.descriptor='instanceof' check for #ref #loc local.variable.of.concrete.class.display.name=Local variable of concrete class local.variable.of.concrete.class.problem.descriptor=Local variable ''{0}'' of concrete class #ref #loc -magic.number.display.name="Magic number" +magic.number.display.name=Magic number magic.number.problem.descriptor=Magic number #ref #loc magic.number.ignore.option=Ignore constants in 'hashCode()' methods method.return.concrete.class.display.name=Method return of concrete class diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java index 051ddcb9c4f5..d3cec0b1542c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java @@ -30,8 +30,8 @@ import javax.swing.*; public class MagicNumberInspectionBase extends BaseInspection { @SuppressWarnings("PublicField") public boolean ignoreInHashCode = true; - @SuppressWarnings("PublicField") - public boolean ignoreInTestCode = false; + @SuppressWarnings({"PublicField", "UnusedDeclaration"}) + public boolean ignoreInTestCode = false; // keep for compatibility @SuppressWarnings("PublicField") public boolean ignoreInAnnotations = true; @SuppressWarnings("PublicField") @@ -53,17 +53,11 @@ public class MagicNumberInspectionBase extends BaseInspection { public JComponent createOptionsPanel() { final MultipleCheckboxOptionsPanel panel = new MultipleCheckboxOptionsPanel(this); panel.addCheckbox(InspectionGadgetsBundle.message("magic.number.ignore.option"), "ignoreInHashCode"); - panel.addCheckbox(InspectionGadgetsBundle.message("ignore.in.test.code"), "ignoreInTestCode"); panel.addCheckbox(InspectionGadgetsBundle.message("ignore.in.annotations"),"ignoreInAnnotations"); panel.addCheckbox(InspectionGadgetsBundle.message("ignore.as.initial.capacity"), "ignoreInitialCapacity"); return panel; } - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - return true; - } - @Override public BaseInspectionVisitor buildVisitor() { return new MagicNumberVisitor(); @@ -87,9 +81,6 @@ public class MagicNumberInspectionBase extends BaseInspection { return; } } - if (ignoreInTestCode && TestUtils.isInTestCode(expression)) { - return; - } if (ignoreInAnnotations) { final boolean insideAnnotation = AnnotationUtil.isInsideAnnotation(expression); if (insideAnnotation) { @@ -111,10 +102,10 @@ public class MagicNumberInspectionBase extends BaseInspection { } final PsiElement parent = expression.getParent(); if (parent instanceof PsiPrefixExpression) { - registerError(parent); + registerError(parent, parent); } else { - registerError(expression); + registerError(expression, expression); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java index 686bc2edf04d..2dde368f788f 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2013 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,13 +15,27 @@ */ package com.siyeh.ig.abstraction; +import com.intellij.psi.PsiElement; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.IntroduceConstantFix; +import com.siyeh.ig.fixes.SuppressForTestsScopeFix; +import org.jetbrains.annotations.NotNull; public class MagicNumberInspection extends MagicNumberInspectionBase { + @NotNull @Override - protected InspectionGadgetsFix buildFix(Object... infos) { - return new IntroduceConstantFix(); + protected InspectionGadgetsFix[] buildFixes(Object... infos) { + final PsiElement context = (PsiElement)infos[0]; + final InspectionGadgetsFix fix = SuppressForTestsScopeFix.build(this, context); + if (fix == null) { + return new InspectionGadgetsFix[] {new IntroduceConstantFix()}; + } + return new InspectionGadgetsFix[] {new IntroduceConstantFix(), fix}; + } + + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { + return true; } } diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html b/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html index b61700762976..af21b69bac29 100644 --- a/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html @@ -1,18 +1,16 @@ -Reports "magic numbers", literal numeric constants used without declaration. -"Magic numbers" can result in code whose intention is extremely unclear, and may result in errors if a "magic -number" is changed in one code location but not another. The numbers 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000, 0L, 1L, 2L, +Reports "magic numbers", which are numeric literals used without being named by a constant declaration. +Magic numbers can result in code whose intention is unclear, and may result in errors if a magic +number is changed in one code location but not another. The numbers 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000, 0L, 1L, 2L, 0.0, 1.0, 0.0F and 1.0F are not reported by this inspection.

Use the first checkbox below to disable this inspection within hashCode() methods.

-Use the second checkbox below to ignore magic numbers in test code. +Use the second checkbox below to ignore magic numbers in annotations.

-Use the third checkbox below to ignore magic numbers in annotations. -

-Use the fourth checkbox below to ignore magic numbers used as initial capacity when constructing Collection, Map, +Use the third checkbox below to ignore magic numbers used as initial capacity when constructing Collection, Map, StringBuilder or StringBuffer objects.