From d47d3480197f80ca48808885ab1dca099e6668f2 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Tue, 10 Nov 2015 20:23:14 +0100 Subject: [PATCH] IDEA-143902 (Analyze: Inspect Code hangs) --- ...terHidingMemberVariableInspectionBase.java | 20 +++++-------- .../ParameterHidingMemberVariable.java | 14 +++++---- .../expected.xml | 30 ------------------- ...terHidingMemberVariableInspectionTest.java | 20 +++++++++---- 4 files changed, 32 insertions(+), 52 deletions(-) delete mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/expected.xml diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionBase.java index a648aeec63a4..64fcaa666c83 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2015 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. @@ -129,7 +129,7 @@ public class ParameterHidingMemberVariableInspectionBase extends BaseInspection } } final PsiClass aClass = checkFieldName(variable, method); - if (aClass == null) { + if (aClass == null) { return; } registerVariableError(variable, aClass); @@ -143,17 +143,13 @@ public class ParameterHidingMemberVariableInspectionBase extends BaseInspection } PsiClass aClass = ClassUtils.getContainingClass(method); while (aClass != null) { - PsiField field = aClass.findFieldByName(variableName, true); - if (field != null) { - if (m_ignoreStaticMethodParametersHidingInstanceFields && !field.hasModifierProperty(PsiModifier.STATIC) && - method.hasModifierProperty(PsiModifier.STATIC)) { - continue; - } - if (!m_ignoreInvisibleFields || ClassUtils.isFieldVisible(field, aClass)) { - return aClass; - } + final PsiField field = aClass.findFieldByName(variableName, true); + if (field != null && + (!m_ignoreStaticMethodParametersHidingInstanceFields || + field.hasModifierProperty(PsiModifier.STATIC) || !method.hasModifierProperty(PsiModifier.STATIC)) && + (!m_ignoreInvisibleFields || ClassUtils.isFieldVisible(field, aClass))) { + return aClass; } - aClass = ClassUtils.getContainingClass(aClass); } return null; diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/ParameterHidingMemberVariable.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/ParameterHidingMemberVariable.java index 3cea3b6e95b7..699f99b1ede5 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/ParameterHidingMemberVariable.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/ParameterHidingMemberVariable.java @@ -4,17 +4,17 @@ public class ParameterHidingMemberVariable { private int bar = -1; - public ParameterHidingMemberVariable(int bar) + public ParameterHidingMemberVariable(int bar) { this.bar = bar; } - public void setBar(int bar) + public void setBar(int bar) { this.bar = bar; } - public void foo(Object bar) + public void foo(Object bar) { System.out.println("bar" + bar); } @@ -24,10 +24,14 @@ public class ParameterHidingMemberVariable @Override public String toString() { new Object() { - public void foo(final String x) { + public void foo(final String x) { System.out.println(x); } }; return x+super.toString(); - } + } + + public static void setBar2(int bar) { + System.out.println(bar); + } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/expected.xml deleted file mode 100644 index fd27719fa90c..000000000000 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/parameter_hiding_member_variable/expected.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - ParameterHidingMemberVariable.java - 7 - Parameter hides field - Parameter <code>bar</code> hides field in class 'ParameterHidingMemberVariable' #loc - - - - ParameterHidingMemberVariable.java - 12 - Parameter hides field - Parameter <code>bar</code> hides field in class 'ParameterHidingMemberVariable' #loc - - - - ParameterHidingMemberVariable.java - 17 - Parameter hides field - Parameter <code>bar</code> hides field in class 'ParameterHidingMemberVariable' #loc - - - - ParameterHidingMemberVariable.java - 27 - Parameter hides field - Parameter <code>x</code> hides field in class 'ParameterHidingMemberVariable' #loc - - \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionTest.java index 38d6be5d0954..49d038aa4cce 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/ParameterHidingMemberVariableInspectionTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,11 +15,21 @@ */ package com.siyeh.ig.visibility; -import com.siyeh.ig.IGInspectionTestCase; +import com.intellij.codeInspection.InspectionProfileEntry; +import com.siyeh.ig.LightInspectionTestCase; +import org.jetbrains.annotations.Nullable; -public class ParameterHidingMemberVariableInspectionTest extends IGInspectionTestCase { +public class ParameterHidingMemberVariableInspectionTest extends LightInspectionTestCase { - public void test() throws Exception { - doTest("com/siyeh/igtest/visibility/parameter_hiding_member_variable", new ParameterHidingMemberVariableInspection()); + public void testParameterHidingMemberVariable() { + doTest(); + } + + @Nullable + @Override + protected InspectionProfileEntry getInspection() { + final ParameterHidingMemberVariableInspection inspection = new ParameterHidingMemberVariableInspection(); + inspection.m_ignoreStaticMethodParametersHidingInstanceFields = true; + return inspection; } } \ No newline at end of file