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_DIRECTORY environment variable to the root of your SFDX project (where sfdx-project.json lives). Without it the rule produces no violations.

    Since:

    7.24.0

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      Object visit(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