net.sourceforge.pmd.lang.java.rule.design
Class UseCollectionIsEmptyRule

java.lang.Object
  extended by net.sourceforge.pmd.AbstractPropertySource
      extended by net.sourceforge.pmd.lang.rule.AbstractRule
          extended by net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
              extended by net.sourceforge.pmd.lang.java.rule.AbstractInefficientZeroCheck
                  extended by net.sourceforge.pmd.lang.java.rule.design.UseCollectionIsEmptyRule
All Implemented Interfaces:
JavaParserVisitor, ImmutableLanguage, PropertySource, Rule

public class UseCollectionIsEmptyRule
extends AbstractInefficientZeroCheck

Detect structures like "foo.size() == 0" and suggest replacing them with foo.isEmpty(). Will also find != 0 (replaceable with !isEmpty()).

Author:
Jason Bennett

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
UseCollectionIsEmptyRule()
           
 
Method Summary
 boolean appliesToClassName(String name)
           
 Map<String,List<String>> getComparisonTargets()
          For each relation/equality operator, comparison targets need to define.
 boolean isTargetMethod(JavaNameOccurrence occ)
          Determine if we're dealing with .size method
 Object visit(ASTPrimarySuffix node, Object data)
           
 
Methods inherited from class net.sourceforge.pmd.lang.java.rule.AbstractInefficientZeroCheck
checkNodeAndReport, visit
 
Methods inherited from class net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
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, 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

UseCollectionIsEmptyRule

public UseCollectionIsEmptyRule()
Method Detail

appliesToClassName

public boolean appliesToClassName(String name)
Specified by:
appliesToClassName in class AbstractInefficientZeroCheck

isTargetMethod

public boolean isTargetMethod(JavaNameOccurrence occ)
Determine if we're dealing with .size method

Specified by:
isTargetMethod in class AbstractInefficientZeroCheck
Parameters:
occ - The name occurrence
Returns:
true if it's .size, else false

getComparisonTargets

public Map<String,List<String>> getComparisonTargets()
Description copied from class: AbstractInefficientZeroCheck
For each relation/equality operator, comparison targets need to define.

Overrides:
getComparisonTargets in class AbstractInefficientZeroCheck
Returns:
map

visit

public Object visit(ASTPrimarySuffix node,
                    Object data)
Specified by:
visit in interface JavaParserVisitor
Overrides:
visit in class AbstractJavaRule


Copyright © 2002-2015 InfoEther. All Rights Reserved.