diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java b/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java
index 0222be70ea43..c7ef1189dcab 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java
@@ -40,6 +40,7 @@ public class LocalCanBeFinal extends BaseJavaBatchLocalInspectionTool {
public boolean REPORT_PARAMETERS = true;
public boolean REPORT_CATCH_PARAMETERS = true;
public boolean REPORT_FOREACH_PARAMETERS = true;
+ public boolean REPORT_IMPLICIT_FINALS = true;
private final LocalQuickFix myQuickFix;
@NonNls public static final String SHORT_NAME = "LocalCanBeFinal";
@@ -58,6 +59,9 @@ public class LocalCanBeFinal extends BaseJavaBatchLocalInspectionTool {
if (!REPORT_FOREACH_PARAMETERS) {
node.addContent(new Element("option").setAttribute("name", "REPORT_FOREACH_PARAMETERS").setAttribute("value", "false"));
}
+ if (!REPORT_IMPLICIT_FINALS) {
+ node.addContent(new Element("option").setAttribute("name", "REPORT_IMPLICIT_FINALS").setAttribute("value", "false"));
+ }
}
@Override
@@ -282,7 +286,9 @@ public class LocalCanBeFinal extends BaseJavaBatchLocalInspectionTool {
private boolean shouldBeIgnored(PsiVariable psiVariable) {
PsiModifierList modifierList = psiVariable.getModifierList();
- if (modifierList == null || modifierList.hasExplicitModifier(PsiModifier.FINAL)) return true;
+ if (modifierList == null) return true;
+ if (REPORT_IMPLICIT_FINALS && modifierList.hasModifierProperty(PsiModifier.FINAL)) return true;
+ if (modifierList.hasExplicitModifier(PsiModifier.FINAL)) return true;
if (psiVariable instanceof PsiLocalVariable) {
return !REPORT_VARIABLES;
}
@@ -343,6 +349,7 @@ public class LocalCanBeFinal extends BaseJavaBatchLocalInspectionTool {
panel.addCheckbox(InspectionsBundle.message("inspection.local.can.be.final.option1"), "REPORT_PARAMETERS");
panel.addCheckbox(InspectionsBundle.message("inspection.local.can.be.final.option2"), "REPORT_CATCH_PARAMETERS");
panel.addCheckbox(InspectionsBundle.message("inspection.local.can.be.final.option3"), "REPORT_FOREACH_PARAMETERS");
+ panel.addCheckbox(InspectionsBundle.message("inspection.local.can.be.final.option4"), "REPORT_IMPLICIT_FINALS");
return panel;
}
diff --git a/platform/platform-resources-en/src/messages/InspectionsBundle.properties b/platform/platform-resources-en/src/messages/InspectionsBundle.properties
index cbc25d9bf284..3d612508b08f 100644
--- a/platform/platform-resources-en/src/messages/InspectionsBundle.properties
+++ b/platform/platform-resources-en/src/messages/InspectionsBundle.properties
@@ -136,6 +136,7 @@ inspection.local.can.be.final.option=Report local variables
inspection.local.can.be.final.option1=Report method parameters
inspection.local.can.be.final.option2=Report catch parameters
inspection.local.can.be.final.option3=Report foreach parameters
+inspection.local.can.be.final.option4=Report variables which are implicit final
inspection.can.be.local.parameter.problem.descriptor=Parameter #ref can have final modifier
inspection.can.be.local.variable.problem.descriptor=Variable #ref can have final modifier