diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspectionBase.java index ca81169adc36..9f20f4c29476 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspectionBase.java @@ -31,6 +31,8 @@ import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.*; import com.intellij.psi.controlFlow.*; +import com.intellij.psi.javadoc.PsiDocComment; +import com.intellij.psi.javadoc.PsiDocTagValue; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; @@ -135,6 +137,10 @@ public class FieldCanBeLocalInspectionBase extends BaseJavaBatchLocalInspectionT } } } + final PsiDocComment docComment = method.getDocComment(); + if (docComment != null) { + docComment.accept(this); + } //do not go inside method } @@ -145,15 +151,26 @@ public class FieldCanBeLocalInspectionBase extends BaseJavaBatchLocalInspectionT @Override public void visitReferenceExpression(PsiReferenceExpression expression) { - final PsiElement resolved = expression.resolve(); + excludeFieldCandidate(expression); + + super.visitReferenceExpression(expression); + } + + @Override + public void visitDocTagValue(PsiDocTagValue value) { + excludeFieldCandidate(value.getReference()); + super.visitDocTagValue(value); + } + + private void excludeFieldCandidate(PsiReference ref) { + if (ref == null) return; + final PsiElement resolved = ref.resolve(); if (resolved instanceof PsiField) { final PsiField field = (PsiField)resolved; if (aClass.equals(field.getContainingClass())) { candidates.remove(field); } } - - super.visitReferenceExpression(expression); } }); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convert2Local/beforeUsedInJavadoc.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convert2Local/beforeUsedInJavadoc.java new file mode 100644 index 000000000000..65e8b00ac9d9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convert2Local/beforeUsedInJavadoc.java @@ -0,0 +1,17 @@ +// "Convert to local" "false" +class TestFieldConversion +{ + private static int someInt = 0; + + public TestFieldConversion() + { + int usingThatInt = someInt; + } + + /** + * Referencing that value here {@value #someInt} + */ + public void someMethod() { + + } +}