net.sourceforge.pmd.rules
Class DoubleCheckedLocking

java.lang.Object
  extended bynet.sourceforge.pmd.ast.JavaParserVisitorAdapter
      extended bynet.sourceforge.pmd.AbstractRule
          extended bynet.sourceforge.pmd.rules.DoubleCheckedLocking
All Implemented Interfaces:
JavaParserVisitor, Rule

public class DoubleCheckedLocking
extends AbstractRule

void method() { if(x == null) { synchronized(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 class net.sourceforge.pmd.AbstractRule
description, example, include, message, name, priority, properties, ruleSetName, usesDFA, usesSymbolTable
 
Fields inherited from interface net.sourceforge.pmd.Rule
LOWEST_PRIORITY, PRIORITIES
 
Constructor Summary
DoubleCheckedLocking()
           
 
Method Summary
 java.lang.String getNameFromPrimaryPrefix(ASTPrimaryPrefix pp)
           
 boolean matchName(ASTPrimaryExpression ape, java.lang.String name)
           
 java.lang.Object visit(ASTClassOrInterfaceDeclaration node, java.lang.Object data)
           
 java.lang.Object visit(ASTMethodDeclaration node, java.lang.Object data)
           
 
Methods inherited from class net.sourceforge.pmd.AbstractRule
addProperties, addProperty, addViolation, addViolation, apply, createRuleViolation, createRuleViolation, createRuleViolation, createRuleViolation, createRuleViolation, equals, getBooleanProperty, getDeclaringType, getDescription, getDoubleProperty, getExample, getIntProperty, getMessage, getName, getPriority, getPriorityName, getProperties, getRuleSetName, getStringProperty, hashCode, hasProperty, include, setDescription, setExample, setInclude, setMessage, setName, setPackageName, setPriority, setRuleSetName, setUsesDFA, setUsesSymbolTable, usesDFA, usesSymbolTable, visit, visit, 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, 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

DoubleCheckedLocking

public DoubleCheckedLocking()
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(ASTClassOrInterfaceDeclaration node,
                              java.lang.Object data)
Specified by:
visit in interface JavaParserVisitor
Overrides:
visit in class AbstractRule

matchName

public boolean matchName(ASTPrimaryExpression ape,
                         java.lang.String name)

getNameFromPrimaryPrefix

public java.lang.String getNameFromPrimaryPrefix(ASTPrimaryPrefix pp)


Copyright © 2002-2005 InfoEther. All Rights Reserved.