IDEA-143902 (Analyze: Inspect Code hangs)

This commit is contained in:
Bas Leijdekkers
2015-11-10 20:24:25 +01:00
parent 62d739df88
commit d47d348019
4 changed files with 32 additions and 52 deletions
@@ -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;
@@ -4,17 +4,17 @@ public class ParameterHidingMemberVariable
{
private int bar = -1;
public ParameterHidingMemberVariable(int bar)
public ParameterHidingMemberVariable(int <warning descr="Parameter 'bar' hides field in class 'ParameterHidingMemberVariable'">bar</warning>)
{
this.bar = bar;
}
public void setBar(int bar)
public void setBar(int <warning descr="Parameter 'bar' hides field in class 'ParameterHidingMemberVariable'">bar</warning>)
{
this.bar = bar;
}
public void foo(Object bar)
public void foo(Object <warning descr="Parameter 'bar' hides field in class 'ParameterHidingMemberVariable'">bar</warning>)
{
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 <warning descr="Parameter 'x' hides field in class 'ParameterHidingMemberVariable'">x</warning>) {
System.out.println(x);
}
};
return x+super.toString();
}
}
public static void setBar2(int bar) {
System.out.println(bar);
}
}
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<problems>
<problem>
<file>ParameterHidingMemberVariable.java</file>
<line>7</line>
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Parameter hides field</problem_class>
<description>Parameter &lt;code&gt;bar&lt;/code&gt; hides field in class 'ParameterHidingMemberVariable' #loc</description>
</problem>
<problem>
<file>ParameterHidingMemberVariable.java</file>
<line>12</line>
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Parameter hides field</problem_class>
<description>Parameter &lt;code&gt;bar&lt;/code&gt; hides field in class 'ParameterHidingMemberVariable' #loc</description>
</problem>
<problem>
<file>ParameterHidingMemberVariable.java</file>
<line>17</line>
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Parameter hides field</problem_class>
<description>Parameter &lt;code&gt;bar&lt;/code&gt; hides field in class 'ParameterHidingMemberVariable' #loc</description>
</problem>
<problem>
<file>ParameterHidingMemberVariable.java</file>
<line>27</line>
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Parameter hides field</problem_class>
<description>Parameter &lt;code&gt;x&lt;/code&gt; hides field in class 'ParameterHidingMemberVariable' #loc</description>
</problem>
</problems>
@@ -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;
}
}