net.sourceforge.pmd.lang.java.rule.sunsecure

## Class AbstractSunSecureRule

- java.lang.Object
- - net.sourceforge.pmd.AbstractPropertySource
  - - net.sourceforge.pmd.lang.rule.AbstractRule
    - - net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
      - - net.sourceforge.pmd.lang.java.rule.sunsecure.AbstractSunSecureRule

All Implemented Interfaces:
  JavaParserVisitor, ImmutableLanguage, PropertySource, Rule

Direct Known Subclasses:
  ArrayIsStoredDirectlyRule, MethodReturnsInternalArrayRule

    public abstract class AbstractSunSecureRule
    extends AbstractJavaRule

Utility methods for the package

Author:
  mgriffa

### Field Summary

### Fields inherited from class net.sourceforge.pmd.AbstractPropertySource

`propertyDescriptors, propertyValuesByDescriptor`

### Fields inherited from interface net.sourceforge.pmd.Rule

`VIOLATION_SUPPRESS_REGEX_DESCRIPTOR, VIOLATION_SUPPRESS_XPATH_DESCRIPTOR`

### Constructor Summary

Constructors
Constructor and Description
`AbstractSunSecureRule()`

### Method Summary

Methods
`protected String` `getFirstNameImage(Node n)` Gets the image of the first ASTName node found by `Node.getFirstDescendantOfType(Class)`
`protected String` `getReturnedVariableName(ASTReturnStatement ret)` Gets the name of the variable returned.
`protected boolean` `isField(String varName, ASTTypeDeclaration typeDeclaration)` Tells if the type declaration has a field with varName.
`protected boolean` `isLocalVariable(String vn, Node node)` TODO modify usages to use symbol table Tells if the variable name is a local variable declared in the method.

### Methods inherited from class net.sourceforge.pmd.lang.java.rule.AbstractJavaRule

`apply, getDeclaringType, importsPackage, isQualifiedName, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, 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, deepCopyValuesTo, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, hashCode, isDeprecated, setDeprecated, setDescription, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setName, setPriority, setRuleClass, setRuleSetName, setSince, setUsesDFA, setUsesTypeResolution, start, usesDFA, usesRuleChain, usesTypeResolution`

### Methods inherited from class net.sourceforge.pmd.AbstractPropertySource

`copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, 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.PropertySource

`definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, useDefaultValueFor, usesDefaultValues`

### Constructor Detail

#### AbstractSunSecureRule

    public AbstractSunSecureRule()

### Method Detail

#### isField

    protected final boolean isField(String varName,
                  ASTTypeDeclaration typeDeclaration)

Tells if the type declaration has a field with varName.

Parameters:
  `varName` - the name of the field to search
  `typeDeclaration` - the type declaration
Returns:
  `true` if there is a field in the type declaration named varName, `false` in other case

#### getReturnedVariableName

    protected final String getReturnedVariableName(ASTReturnStatement ret)

Gets the name of the variable returned. Some examples:
for this.foo returns foo
for foo returns foo
for foo.bar returns foo.bar

Parameters:
  `ret` - a return statement to evaluate
Returns:
  the name of the variable associated or `null` if it cannot be detected

#### isLocalVariable

    protected boolean isLocalVariable(String vn,
                          Node node)

TODO modify usages to use symbol table Tells if the variable name is a local variable declared in the method.

Parameters:
  `vn` - the variable name
  `node` - the ASTMethodDeclaration where the local variable name will be searched
Returns:
  `true` if the method declaration contains any local variable named vn and `false` in other case

#### getFirstNameImage

    protected String getFirstNameImage(Node n)

Gets the image of the first ASTName node found by `Node.getFirstDescendantOfType(Class)`

Parameters:
  `n` - the node to search
Returns:
  the image of the first ASTName or `null`