Getting this repetitively on a PMD ant execution:
[pmd-task] WARNING: Exception applying rule UselessStringValueOf, continuing with next rule
[pmd-task] java.lang.NullPointerException
[pmd-task] at net.sourceforge.pmd.lang.java.rule.strings.UselessStringValueOfRule.visit(UselessStringValueOfRule.java:36)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTPrimaryPrefix.jjtAccept(ASTPrimaryPrefix.java:37)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:370)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTPrimaryExpression.jjtAccept(ASTPrimaryExpression.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:290)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTExpression.jjtAccept(ASTExpression.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:482)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTReturnStatement.jjtAccept(ASTReturnStatement.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:410)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTStatement.jjtAccept(ASTStatement.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:422)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTBlockStatement.jjtAccept(ASTBlockStatement.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:418)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTBlock.jjtAccept(ASTBlock.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:242)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration.jjtAccept(ASTMethodDeclaration.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:106)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceBodyDeclaration.jjtAccept(ASTClassOrInterfaceBodyDeclaration.java:38)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:102)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceBody.jjtAccept(ASTClassOrInterfaceBody.java:19)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:78)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration.jjtAccept(ASTClassOrInterfaceDeclaration.java:23)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:218)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration.jjtAccept(ASTTypeDeclaration.java:33)
[pmd-task] at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.childrenAccept(AbstractJavaNode.java:52)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:69)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit(AbstractJavaRule.java:198)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visitAll(AbstractJavaRule.java:30)
[pmd-task] at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.apply(AbstractJavaRule.java:24)
[pmd-task] at net.sourceforge.pmd.lang.rule.AbstractDelegateRule.apply(AbstractDelegateRule.java:215)
[pmd-task] at net.sourceforge.pmd.RuleSet.apply(RuleSet.java:234)
[pmd-task] at net.sourceforge.pmd.RuleSets.apply(RuleSets.java:122)
[pmd-task] at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:144)
[pmd-task] at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:75)
[pmd-task] at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:42)
[pmd-task] at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:75)
[pmd-task] at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:22)
[pmd-task] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
[pmd-task] at java.util.concurrent.FutureTask.run(FutureTask.java:166)
[pmd-task] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
[pmd-task] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
[pmd-task] at java.lang.Thread.run(Thread.java:722)
[pmd-task]
Hi,
Which version of PMD are you using?
And do you know the code part, that triggers this NPE?
From the stack trace, it looks roughly like this:
You can search for a return statement, that contains a "String.valueOf" expression.
Thanks,
Andreas
I've got the same problem in PMD 5.0.4.
Reduced code for triggering is as follows:
Note that Build.TIME and Build.VERSION.SDK_INT are public static final long and int, respectively, but no constant expressions, i.e., they get set/initialized at runtime and cannot be inlined at compiletime.
Last edit: Rudolf Schürer 2013-08-02