Class AvoidInterfaceAsMapKeyRule
-
- All Implemented Interfaces:
-
net.sourceforge.pmd.lang.apex.ast.ApexVisitor,net.sourceforge.pmd.lang.ast.AstVisitor,net.sourceforge.pmd.lang.rule.Rule,net.sourceforge.pmd.properties.PropertySource
public class AvoidInterfaceAsMapKeyRule extends AbstractApexRule
Flags use of an interface as Map key when that interface has an implementing class that is abstract and defines equals or hashCode. In Apex, Map operations like containsKey do not dispatch to the correct equals/hashCode in that case.
Requires multifile analysis: set the
PMD_APEX_ROOT_DIRECTORYenvironment variable to the root of your SFDX project (wheresfdx-project.jsonlives). Without it the rule produces no violations.- Since:
7.24.0
-
-
Field Summary
Fields Modifier and Type Field Description public Languagelanguagepublic LanguageVersionminimumLanguageVersionpublic LanguageVersionmaximumLanguageVersionpublic Stringnamepublic Stringsincepublic StringruleClasspublic StringruleSetNamepublic Stringmessagepublic Stringdescriptionpublic List<String>examplespublic StringexternalInfoUrlpublic RulePriorityprioritypublic final List<PropertyDescriptor<out Object>>propertyDescriptorspublic final static PropertyDescriptor<Optional<Pattern>>VIOLATION_SUPPRESS_REGEX_DESCRIPTORpublic final static PropertyDescriptor<Optional<String>>VIOLATION_SUPPRESS_XPATH_DESCRIPTOR
-
Constructor Summary
Constructors Constructor Description AvoidInterfaceAsMapKeyRule()
-
Method Summary
Modifier and Type Method Description Objectvisit(ASTApexFile node, Object data)-
Methods inherited from class net.sourceforge.pmd.lang.rule.AbstractRule
addExample, deepCopy, dysfunctionReason, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getPriority, getRuleClass, getRuleSetName, getSince, getTargetSelector, hashCode, isDeprecated, setDeprecated, setDescription, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setName, setPriority, setRuleClass, setRuleSetName, setSince, start -
Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
definePropertyDescriptor, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, isPropertyOverridden, setProperty -
Methods inherited from class net.sourceforge.pmd.lang.apex.rule.AbstractApexRule
apply, visitNode -
Methods inherited from class net.sourceforge.pmd.lang.apex.ast.ApexVisitor
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitApexNode -
Methods inherited from class net.sourceforge.pmd.lang.rule.Rule
apply, initialize -
Methods inherited from class net.sourceforge.pmd.lang.ast.AstVisitor
cannotVisit, visitNode -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
Method Detail
-
visit
Object visit(ASTApexFile node, Object data)
-
-
-
-