From e7c0d03180176fa457b1ce898e2ac6d1ac26603b Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sun, 1 Nov 2015 18:51:37 +0100 Subject: [PATCH] InvalidSlf4jMessageFormat: Fix class cast exception with method calls --- .../logging/InvalidSlf4jMessageFormatRule.java | 5 +++-- .../xml/InvalidSlf4jMessageFormat.xml | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/logging/InvalidSlf4jMessageFormatRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/logging/InvalidSlf4jMessageFormatRule.java index 296665380f..597c076476 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/logging/InvalidSlf4jMessageFormatRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/logging/InvalidSlf4jMessageFormatRule.java @@ -26,6 +26,7 @@ import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclarator; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.lang.java.ast.AbstractJavaTypeNode; import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule; +import net.sourceforge.pmd.lang.java.symboltable.VariableNameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import org.apache.commons.lang3.StringUtils; @@ -42,8 +43,8 @@ public class InvalidSlf4jMessageFormatRule extends AbstractJavaRule { @Override public Object visit(final ASTName node, final Object data) { final NameDeclaration nameDeclaration = node.getNameDeclaration(); - // ignore imports - if (nameDeclaration == null) { + // ignore imports or methods + if (nameDeclaration == null || !(nameDeclaration instanceof VariableNameDeclaration)) { return super.visit(node, data); } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/loggingjava/xml/InvalidSlf4jMessageFormat.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/loggingjava/xml/InvalidSlf4jMessageFormat.xml index 2daa54a5c2..73682b5d5e 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/loggingjava/xml/InvalidSlf4jMessageFormat.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/loggingjava/xml/InvalidSlf4jMessageFormat.xml @@ -74,6 +74,22 @@ public class Foo { public void call() { LOGGER.error("params {} and {}", "arg1", "arg2", new IllegalStateException("Extra arg")); } +} + ]]> + + + + Class cast exception with Method calls + 0 +