net.sourceforge.pmd.rules
Class ConstructorCallsOverridableMethodRule
java.lang.Object
|
+--net.sourceforge.pmd.ast.JavaParserVisitorAdapter
|
+--net.sourceforge.pmd.AbstractRule
|
+--net.sourceforge.pmd.rules.ConstructorCallsOverridableMethodRule
- All Implemented Interfaces:
- JavaParserVisitor, Rule
- public final class ConstructorCallsOverridableMethodRule
- extends AbstractRule
Searches through all methods and constructors called from constructors. It
marks as dangerous any call to overridable methods from non-private
constructors. It marks as dangerous any calls to dangerous private constructors
from non-private constructors.
- Author:
- CL Gilbert (dnoyeb@users.sourceforge.net)
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 |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
ConstructorCallsOverridableMethodRule
public ConstructorCallsOverridableMethodRule()
visit
public java.lang.Object visit(ASTCompilationUnit node,
java.lang.Object data)
- Work on each file independently.
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
visit
public java.lang.Object visit(ASTClassDeclaration node,
java.lang.Object data)
- This check must be evaluated independelty for each class. Inner classses
get their own EvalPackage in order to perform independent evaluation.
- 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
visit
public java.lang.Object visit(ASTConstructorDeclaration node,
java.lang.Object data)
- Non-private constructor's methods are added to a list for later safety
evaluation. Non-private constructor's calls on private constructors
are added to a list for later safety evaluation. Private constructors
are added to a list so their safety to be called can be later evaluated.
Note: We are not checking private constructor's calls on non-private
constructors because all non-private constructors will be evaluated for
safety anyway. This means we wont flag a private constructor as unsafe
just because it calls an unsafe public constructor. We want to show only
1 instance of an error, and this would be 2 instances of the same error.
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
visit
public java.lang.Object visit(ASTMethodDeclarator node,
java.lang.Object data)
- Create a MethodHolder to hold the method.
Store the MethodHolder in the Map as the key
Store each method called by the current method as a List in the Map as the Object
- Specified by:
visit
in interface JavaParserVisitor
- Overrides:
visit
in class JavaParserVisitorAdapter
Copyright © 2002-2003 Project Ultra*Log @ DARPA. All Rights Reserved.