JavaParserVisitor
, net.sourceforge.pmd.properties.PropertySource
, 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.
propertyDescriptors, propertyValuesByDescriptor
VIOLATION_SUPPRESS_REGEX_DESCRIPTOR, VIOLATION_SUPPRESS_XPATH_DESCRIPTOR
Constructor | Description |
---|---|
DoubleCheckedLockingRule() |
Modifier and Type | Method | Description |
---|---|---|
java.lang.Object |
visit(ASTClassOrInterfaceDeclaration node,
java.lang.Object data) |
|
java.lang.Object |
visit(ASTCompilationUnit compilationUnit,
java.lang.Object data) |
|
java.lang.Object |
visit(ASTFieldDeclaration fieldDeclaration,
java.lang.Object data) |
|
java.lang.Object |
visit(ASTMethodDeclaration node,
java.lang.Object data) |
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, visitAll
copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
addExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, deepCopy, deepCopyValuesTo, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, 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
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
public java.lang.Object visit(ASTClassOrInterfaceDeclaration node, java.lang.Object data)
visit
in interface JavaParserVisitor
visit
in class AbstractJavaRule
public java.lang.Object visit(ASTCompilationUnit compilationUnit, java.lang.Object data)
visit
in interface JavaParserVisitor
visit
in class AbstractJavaRule
public java.lang.Object visit(ASTFieldDeclaration fieldDeclaration, java.lang.Object data)
visit
in interface JavaParserVisitor
visit
in class AbstractJavaRule
public java.lang.Object visit(ASTMethodDeclaration node, java.lang.Object data)
visit
in interface JavaParserVisitor
visit
in class AbstractJavaRule
Copyright © 2002–2018 PMD. All rights reserved.