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)

Field Summary
 
Fields inherited from interface net.sourceforge.pmd.Rule
LOWEST_PRIORITY, PRIORITIES
 
Constructor Summary
DoubleCheckedLockingRule()
           
 
Method Summary
 java.lang.String getNameFromPrimaryPrefix(ASTPrimaryPrefix pp)
           
 boolean matchName(ASTPrimaryExpression ape, java.lang.String name)
           
 java.lang.Object visit(ASTClassDeclaration node, java.lang.Object data)
           
 java.lang.Object visit(ASTInterfaceDeclaration node, java.lang.Object data)
           
 java.lang.Object visit(ASTMethodDeclaration node, java.lang.Object data)
           
 java.lang.Object visit(ASTNestedClassDeclaration node, java.lang.Object data)
           
 java.lang.Object visit(ASTNestedInterfaceDeclaration node, java.lang.Object data)
           
 
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
 

Constructor Detail

DoubleCheckedLockingRule

public DoubleCheckedLockingRule()
Method Detail

visit

public java.lang.Object visit(ASTMethodDeclaration node,
                              java.lang.Object data)
Specified by:
visit in interface JavaParserVisitor
Overrides:
visit in class JavaParserVisitorAdapter

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)


Copyright © 2002-2003 Project Ultra*Log @ DARPA. All Rights Reserved.