Add return and throw as ok places
This commit is contained in:
2 files changed
+33
-1
No files matched your search
+5
-1
@@ -31,6 +31,8 @@ import net.sourceforge.pmd.lang.java.ast.ASTExpressionStatement;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTFieldAccess;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTForeachStatement;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTMethodCall;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTReturnStatement;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTThrowStatement;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTTypeExpression;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTVariableAccess;
|
||||
import net.sourceforge.pmd.lang.java.ast.QualifiableExpression;
|
||||
@@ -242,7 +244,9 @@ public class LawOfDemeterRule extends AbstractJavaRulechainRule {
|
||||
|
||||
private boolean isUsedInThisMethod(ASTExpression expr) {
|
||||
return !(expr.getParent() instanceof ASTExpressionStatement)
|
||||
&& !(expr.getParent() instanceof ASTArgumentList);
|
||||
&& !(expr.getParent() instanceof ASTArgumentList)
|
||||
&& !(expr.getParent() instanceof ASTReturnStatement)
|
||||
&& !(expr.getParent() instanceof ASTThrowStatement);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+28
@@ -1068,4 +1068,32 @@ public final class ControlEvent {
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
<test-code>
|
||||
<description>Return and throw mean not used here</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<expected-linenumbers>3</expected-linenumbers>
|
||||
<expected-messages>
|
||||
<message>Call to `getLanguage` on foreign value `rule` (degree 2)</message>
|
||||
</expected-messages>
|
||||
<code><![CDATA[
|
||||
class Foo {
|
||||
public String toString(Rule rule) {
|
||||
rule.getLanguage().doSomething(); // warn
|
||||
|
||||
println(rule.getLanguage()); // no warning
|
||||
if (foo)
|
||||
return rule.getLanguage(); // no warning
|
||||
else
|
||||
throw rule.getLanguage(); // no warning
|
||||
}
|
||||
}
|
||||
interface Language {
|
||||
String getName();
|
||||
void doSomething();
|
||||
}
|
||||
interface Rule {
|
||||
Language getLanguage();
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
</test-data>
|
||||
Reference in new issue
Block a user