JavaParserVisitor, net.sourceforge.pmd.properties.PropertySource, Rulepublic 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, propertyValuesByDescriptorVIOLATION_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, visitAllcopyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, setProperty, useDefaultValueFor, usesDefaultValuesaddExample, 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, usesTypeResolutionclone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitdefinePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, setProperty, useDefaultValueFor, usesDefaultValuespublic java.lang.Object visit(ASTClassOrInterfaceDeclaration node, java.lang.Object data)
visit in interface JavaParserVisitorvisit in class AbstractJavaRulepublic java.lang.Object visit(ASTCompilationUnit compilationUnit, java.lang.Object data)
visit in interface JavaParserVisitorvisit in class AbstractJavaRulepublic java.lang.Object visit(ASTFieldDeclaration fieldDeclaration, java.lang.Object data)
visit in interface JavaParserVisitorvisit in class AbstractJavaRulepublic java.lang.Object visit(ASTMethodDeclaration node, java.lang.Object data)
visit in interface JavaParserVisitorvisit in class AbstractJavaRuleCopyright © 2002–2018 PMD. All rights reserved.