Class DoubleCheckedLockingRule
- java.lang.Object
-
- net.sourceforge.pmd.properties.AbstractPropertySource
-
- net.sourceforge.pmd.lang.rule.AbstractRule
-
- net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
-
- net.sourceforge.pmd.lang.java.rule.multithreading.DoubleCheckedLockingRule
-
- All Implemented Interfaces:
JavaParserVisitor,net.sourceforge.pmd.lang.rule.ImmutableLanguage,net.sourceforge.pmd.properties.PropertySource,net.sourceforge.pmd.Rule
public class DoubleCheckedLockingRule extends AbstractJavaRule
void method() { if (x == null) { synchronized(this){ if (x == null) { x = new | method(); } } } }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 ([email protected])
-
-
Constructor Summary
Constructors Constructor Description DoubleCheckedLockingRule()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Objectvisit(ASTClassOrInterfaceDeclaration node, Object data)Objectvisit(ASTCompilationUnit compilationUnit, Object data)Objectvisit(ASTFieldDeclaration fieldDeclaration, Object data)Objectvisit(ASTMethodDeclaration node, Object data)-
Methods inherited from class net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
apply, getDeclaringType, importsPackage, isQualifiedName, isSuppressed, 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, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitAll
-
Methods inherited from class net.sourceforge.pmd.lang.rule.AbstractRule
addExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, deepCopy, deepCopyValuesTo, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, getPropertySourceType, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, hashCode, isDeprecated, isDfa, isMultifile, isRuleChain, isTypeResolution, setDeprecated, setDescription, setDfa, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setMultifile, setName, setPriority, setRuleClass, setRuleSetName, setSince, setTypeResolution, setUsesDFA, setUsesMultifile, setUsesTypeResolution, start, usesDFA, usesMultifile, usesRuleChain, usesTypeResolution
-
Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, isPropertyOverridden, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.sourceforge.pmd.properties.PropertySource
definePropertyDescriptor, dysfunctionReason, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, isPropertyOverridden, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
-
-
-
Method Detail
-
visit
public Object visit(ASTClassOrInterfaceDeclaration node, Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
visit
public Object visit(ASTCompilationUnit compilationUnit, Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
visit
public Object visit(ASTFieldDeclaration fieldDeclaration, Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
visit
public Object visit(ASTMethodDeclaration node, Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
-