## net.sourceforge.pmd.rules
Class ConstructorCallsOverridableMethod

    java.lang.Object
      net.sourceforge.pmd.ast.JavaParserVisitorAdapter
          net.sourceforge.pmd.AbstractRule
              net.sourceforge.pmd.rules.ConstructorCallsOverridableMethod

All Implemented Interfaces:
  JavaParserVisitor, Rule

public final class ConstructorCallsOverridableMethod
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)

Field Summary

Fields inherited from class net.sourceforge.pmd.AbstractRule
`description, example, externalInfoUrl, include, message, name, priority, properties, ruleSetName, usesDFA`

Fields inherited from interface net.sourceforge.pmd.Rule
`LOWEST_PRIORITY, PRIORITIES`

Constructor Summary
`ConstructorCallsOverridableMethod()`

Method Summary
`java.lang.Object` `visit(ASTClassOrInterfaceDeclaration node, java.lang.Object data)` This check must be evaluated independelty for each class.
`java.lang.Object` `visit(ASTCompilationUnit node, java.lang.Object data)`
`java.lang.Object` `visit(ASTConstructorDeclaration node, java.lang.Object data)` Non-private constructor's methods are added to a list for later safety evaluation.
`java.lang.Object` `visit(ASTEnumDeclaration node, java.lang.Object data)`
`java.lang.Object` `visit(ASTMethodDeclarator node, java.lang.Object data)` Create a MethodHolder to hold the method.

Methods inherited from class net.sourceforge.pmd.AbstractRule

`addProperties, addProperty, addViolation, addViolation, addViolation, addViolationWithMessage, apply, equals, getBooleanProperty, getDeclaringType, getDescription, getDoubleProperty, getExample, getExternalInfoUrl, getIntProperty, getMessage, getName, getPriority, getPriorityName, getProperties, getRuleSetName, getStringProperty, hashCode, hasProperty, include, setDescription, setExample, setExternalInfoUrl, setInclude, setMessage, setName, setPriority, setRuleSetName, setUsesDFA, usesDFA, 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, visit`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ConstructorCallsOverridableMethod

    public ConstructorCallsOverridableMethod()

Method Detail

### visit

    public java.lang.Object visit(ASTCompilationUnit node,
                                  java.lang.Object data)

  Specified by:
    `visit` in interface `JavaParserVisitor`
  Overrides:
    `visit` in class `JavaParserVisitorAdapter`

### visit

    public java.lang.Object visit(ASTEnumDeclaration 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)

  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(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-2006 InfoEther. All Rights Reserved.