diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index b8f8783555..c1806b1dab 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -16,6 +16,9 @@ This is a {{ site.pmd.release_type }} release. ### Fixed Issues +* apex-bestpractices + * [#2626](https://github.com/pmd/pmd/issues/2626): \[apex] UnusedLocalVariable - false positive on case insensitivity allowed in Apex + ### API Changes ### External Contributions diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/bestpractices/UnusedLocalVariableRule.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/bestpractices/UnusedLocalVariableRule.java index e9f2c7b721..0a9cb4592a 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/bestpractices/UnusedLocalVariableRule.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/bestpractices/UnusedLocalVariableRule.java @@ -1,4 +1,4 @@ -/** +/* * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ @@ -41,7 +41,7 @@ public class UnusedLocalVariableRule extends AbstractApexRule { continue; } - if (usage.hasImageEqualTo(variableName)) { + if (equalsIgnoreCase(variableName, usage.getImage())) { return data; } } @@ -49,4 +49,14 @@ public class UnusedLocalVariableRule extends AbstractApexRule { addViolation(data, node, variableName); return data; } + + private static boolean equalsIgnoreCase(String a, String b) { + if (a == b) { + return true; + } + if (a == null || b == null) { + return false; + } + return a.equalsIgnoreCase(b); + } } diff --git a/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/bestpractices/xml/UnusedLocalVariable.xml b/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/bestpractices/xml/UnusedLocalVariable.xml index 1888c60fda..5f39923098 100644 --- a/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/bestpractices/xml/UnusedLocalVariable.xml +++ b/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/bestpractices/xml/UnusedLocalVariable.xml @@ -94,6 +94,20 @@ public class Foo { trigger leadOwnerUpdate on Lead (after update) { for(Lead Id : Trigger.new) { } +} + ]]> + + + + [apex] UnusedLocalVariable - false positive on case insensitivity allowed in Apex #2626 + 0 +