Affects PMD Version:
6.0.0
Rule:
AvoidFinalLocalVariable
Violation:
<file name="/Users/nik/tmp/lint-rules/lint-rules-android-lint/src/main/java/com/vanniktech/lintrules/android/SuperfluousDeclarationDetector.java"> <violation beginline="26" endline="26" begincolumn="5" endcolumn="117" rule="AvoidFinalLocalVariable" ruleset="Code Style" package="com.vanniktech.lintrules.android" class="SuperfluousDeclarationDetector" method="visitAttribute" variable="isToolsAttribute" externalInfoUrl="https://pmd.github.io/pmd-6.0.0/pmd_rules_java_codestyle.html#avoidfinallocalvariable" priority="3"> Avoid using final local variables, turn them into fields </violation>
Description:
isToolsAttribute
is getting flagged here but I see no reason why I should make this a field. What's the reasoning behind this here?
Code Sample demonstrating the issue:
package com.vanniktech.lintrules.android; import com.android.annotations.NonNull; import com.android.tools.lint.detector.api.Context; import com.android.tools.lint.detector.api.Issue; import com.android.tools.lint.detector.api.LayoutDetector; import com.android.tools.lint.detector.api.XmlContext; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.w3c.dom.Attr; import org.w3c.dom.Element; public abstract class SuperfluousDeclarationDetector extends LayoutDetector { private Map<Element, List<String>> values = new HashMap<>(); @Override public void beforeCheckFile(final Context context) { values = new HashMap<>(); } @Override public final void visitAttribute(@NonNull final XmlContext context, @NonNull final Attr attribute) { final Element ownerElement = attribute.getOwnerElement(); final boolean isToolsAttribute = "http://schemas.android.com/tools".equalsIgnoreCase(attribute.getNamespaceURI()); if (!isToolsAttribute) { final List<String> valuesForElement = values.get(ownerElement); if (valuesForElement != null) { valuesForElement.add(attribute.getValue()); } else { final List<String> list = new ArrayList<>(); list.add(attribute.getValue()); values.put(ownerElement, list); } } }
Running PMD through: [Gradle]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4