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
    Modifier and Type | Method and Description
    --- | ---
    `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`

Copyright © 2002-2013 InfoEther. All Rights Reserved.