net.sourceforge.pmd.rules
Class DoubleCheckedLockingRule
java.lang.Object
net.sourceforge.pmd.ast.JavaParserVisitorAdapter
net.sourceforge.pmd.AbstractRule
net.sourceforge.pmd.rules.DoubleCheckedLockingRule
- All Implemented Interfaces:
- JavaParserVisitor, Rule
- public class DoubleCheckedLockingRule
- extends AbstractRule
void method() {
if(x == null) {
synchronize(this){
if(x == null) {
x = new | method();
}
}
}
1. The error is when one uses the value assigned within a synchronized
section, outside of a synchronized section.
if(x == null) is outside of synchronized section
x = new | method();
Very very specific check for double checked locking.
- Author:
- CL Gilbert (dnoyeb@users.sourceforge.net)
Fields inherited from class net.sourceforge.pmd.AbstractRule |
|
Methods inherited from class net.sourceforge.pmd.AbstractRule |
addProperty, apply, createRuleViolation, createRuleViolation, equals, getBooleanProperty, getDescription, getDoubleProperty, getExample, getIntProperty, getMessage, getName, getPriority, getPriorityName, getProperties, getStringProperty, hashCode, hasProperty, include, setDescription, setExample, setInclude, setMessage, setName, setPriority, visitAll |
Methods inherited from class net.sourceforge.pmd.ast.JavaParserVisitorAdapter |
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
interfaceSkipper
private boolean interfaceSkipper
DoubleCheckedLockingRule
public DoubleCheckedLockingRule()
visit
public java.lang.Object visit(ASTMethodDeclaration node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
ifVerify
private boolean ifVerify(ASTIfStatement is,
java.lang.String varname)
visit
public java.lang.Object visit(ASTClassDeclaration node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
visit
public java.lang.Object visit(ASTNestedClassDeclaration node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
visit
public java.lang.Object visit(ASTInterfaceDeclaration node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
visit
public java.lang.Object visit(ASTNestedInterfaceDeclaration node,
java.lang.Object data)
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
matchName
public boolean matchName(ASTPrimaryExpression ape,
java.lang.String name)
getNameFromPrimaryPrefix
public java.lang.String getNameFromPrimaryPrefix(ASTPrimaryPrefix pp)