Class UseCollectionIsEmptyRule
- java.lang.Object
-
- net.sourceforge.pmd.properties.AbstractPropertySource
-
- net.sourceforge.pmd.lang.rule.AbstractRule
-
- net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
-
- net.sourceforge.pmd.lang.java.rule.AbstractInefficientZeroCheck
-
- net.sourceforge.pmd.lang.java.rule.bestpractices.UseCollectionIsEmptyRule
-
- All Implemented Interfaces:
JavaParserVisitor,net.sourceforge.pmd.lang.rule.ImmutableLanguage,net.sourceforge.pmd.properties.PropertySource,net.sourceforge.pmd.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
-
-
Constructor Summary
Constructors Constructor Description UseCollectionIsEmptyRule()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanappliesToClassName(java.lang.String name)java.util.Map<java.lang.String,java.util.List<java.lang.String>>getComparisonTargets()For each relation/equality operator, comparison targets need to define.booleanisTargetMethod(JavaNameOccurrence occ)Determine if we're dealing with .size methodjava.lang.Objectvisit(ASTPrimarySuffix node, java.lang.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, visit, visit, visit, visitAll
-
Methods inherited from class net.sourceforge.pmd.lang.rule.AbstractRule
addExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, deepCopy, deepCopyValuesTo, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, hashCode, isDeprecated, isDfa, isMultifile, isRuleChain, isTypeResolution, setDeprecated, setDescription, setDfa, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setMultifile, setName, setPriority, setRuleClass, setRuleSetName, setSince, setTypeResolution, setUsesDFA, setUsesMultifile, setUsesTypeResolution, start, usesDFA, usesMultifile, usesRuleChain, usesTypeResolution
-
Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, 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.properties.PropertySource
definePropertyDescriptor, dysfunctionReason, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
-
-
-
Method Detail
-
appliesToClassName
public boolean appliesToClassName(java.lang.String name)
- Specified by:
appliesToClassNamein classAbstractInefficientZeroCheck
-
isTargetMethod
public boolean isTargetMethod(JavaNameOccurrence occ)
Determine if we're dealing with .size method- Specified by:
isTargetMethodin classAbstractInefficientZeroCheck- Parameters:
occ- The name occurrence- Returns:
- true if it's .size, else false
-
getComparisonTargets
public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getComparisonTargets()
Description copied from class:AbstractInefficientZeroCheckFor each relation/equality operator, comparison targets need to define.- Overrides:
getComparisonTargetsin classAbstractInefficientZeroCheck- Returns:
- map
-
visit
public java.lang.Object visit(ASTPrimarySuffix node, java.lang.Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
-