From a6fd1fd8b9765c7e7b69dcceb72c7c317cb4d027 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 19 Jul 2012 16:03:46 +0200 Subject: [PATCH] IDEA-89017 (Add "disable for annotations" checkbox for "Magic Number" inspection) --- .../siyeh/InspectionGadgetsBundle.properties | 1 + .../ig/abstraction/MagicNumberInspection.java | 7 +++++ .../inspectionDescriptions/MagicNumber.html | 2 ++ .../MagicNumber.java} | 14 +++++---- .../abstraction/magic_number/expected.xml | 30 +++++++++++++++++++ .../MagicNumberInspectionTest.java | 13 ++++++++ 6 files changed, 62 insertions(+), 5 deletions(-) rename plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/{MagicNumberInspection.java => magic_number/MagicNumber.java} (70%) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/expected.xml create mode 100644 plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/MagicNumberInspectionTest.java diff --git a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties index ebfdfd0397cb..b976dcfe3aaf 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties @@ -354,6 +354,7 @@ string.concatenation.ignore.assert.option=Ignore for assert statement arguments string.concatenation.ignore.exceptions.option=Ignore for throwable arguments string.concatenation.ignore.constant.initializers.option=Ignore for initializers of constants ignore.in.test.code=Ignore in test code +ignore.in.annotations=Ignore in annotations string.equalsignorecase.call.display.name=Call to 'String.equalsIgnoreCase()' string.equalsignorecase.call.problem.descriptor=String.#ref() using internationalized strings #loc string.equals.call.display.name=Call to 'String.equals()' diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java index becbac882c5c..812568d4caf1 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/MagicNumberInspection.java @@ -39,6 +39,9 @@ public class MagicNumberInspection extends BaseInspection { @SuppressWarnings("PublicField") public boolean ignoreInTestCode = false; + @SuppressWarnings("PublicField") + public boolean ignoreInAnnotations = true; + @Override @NotNull public String getDisplayName() { @@ -56,6 +59,7 @@ public class MagicNumberInspection extends BaseInspection { 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"); return panel; } @@ -102,6 +106,9 @@ public class MagicNumberInspection extends BaseInspection { return; } final PsiElement parent = expression.getParent(); + if (ignoreInAnnotations && parent instanceof PsiNameValuePair) { + return; + } if (parent instanceof PsiPrefixExpression) { registerError(parent); } diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html b/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html index e34b4d709f5a..d61e8f502f99 100644 --- a/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/MagicNumber.html @@ -10,6 +10,8 @@ Use the first checkbox below to disable this inspection within hashCode()

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

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

Powered by InspectionGadgets \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/MagicNumberInspection.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/MagicNumber.java similarity index 70% rename from plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/MagicNumberInspection.java rename to plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/MagicNumber.java index abf2b5dbd36e..77fda329900e 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/MagicNumberInspection.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/MagicNumber.java @@ -1,9 +1,10 @@ -package com.siyeh.igtest.abstraction; +package com.siyeh.igtest.abstraction.magic_number; import java.util.Set; import java.util.HashSet; -public class MagicNumberInspection +@Size(max = 15) +public class MagicNumber { private static final int s_foo = 400; private int m_foo = 400; @@ -21,10 +22,10 @@ public class MagicNumberInspection if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - final MagicNumberInspection magicNumberInspection = (MagicNumberInspection) o; + final MagicNumber magicNumber = (MagicNumber) o; - if (m_foo != magicNumberInspection.m_foo) return false; - if (m_foo2 != magicNumberInspection.m_foo2) return false; + if (m_foo != magicNumber.m_foo) return false; + if (m_foo2 != magicNumber.m_foo2) return false; return true; } @@ -35,4 +36,7 @@ public class MagicNumberInspection result = 29 * result + m_foo2; return result; } +} +@interface Size { + int max(); } \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/expected.xml new file mode 100644 index 000000000000..fc8efb569919 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/expected.xml @@ -0,0 +1,30 @@ + + + + MagicNumber.java + 10 + "Magic number" + Magic number <code>400</code> #loc + + + + MagicNumber.java + 17 + "Magic number" + Magic number <code>400</code> #loc + + + + MagicNumber.java + 12 + "Magic number" + Magic number <code>400</code> #loc + + + + MagicNumber.java + 11 + "Magic number" + Magic number <code>400</code> #loc + + \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/MagicNumberInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/MagicNumberInspectionTest.java new file mode 100644 index 000000000000..d1423b1344d8 --- /dev/null +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/MagicNumberInspectionTest.java @@ -0,0 +1,13 @@ +package com.siyeh.ig.abstraction; + +import com.siyeh.ig.IGInspectionTestCase; + +public class MagicNumberInspectionTest extends IGInspectionTestCase { + + public void test() throws Exception { + final MagicNumberInspection tool = new MagicNumberInspection(); + tool.ignoreInHashCode = true; + tool.ignoreInAnnotations = true; + doTest("com/siyeh/igtest/abstraction/magic_number", tool); + } +} \ No newline at end of file