Class AbstractRule

  • All Implemented Interfaces:
    PropertySource, Rule
    Direct Known Subclasses:
    MockRule, XPathRule

    public abstract class AbstractRule
    extends AbstractPropertySource
    implements Rule
    Basic abstract implementation of all parser-independent methods of the Rule interface.
    Author:
    pieter_van_raemdonck - Application Engineers NV/SA - www.ae.be
    • Constructor Detail

      • AbstractRule

        public AbstractRule()
    • Method Detail

      • getLanguage

        public Language getLanguage()
        Description copied from interface: Rule
        Get the Language of this Rule.
        Specified by:
        getLanguage in interface Rule
        Returns:
        the language
      • setLanguage

        public void setLanguage​(Language language)
        Description copied from interface: Rule
        Set the Language of this Rule.
        Specified by:
        setLanguage in interface Rule
        Parameters:
        language - the language
      • getMinimumLanguageVersion

        public LanguageVersion getMinimumLanguageVersion()
        Description copied from interface: Rule
        Get the minimum LanguageVersion to which this Rule applies. If this value is null it indicates there is no minimum bound.
        Specified by:
        getMinimumLanguageVersion in interface Rule
        Returns:
        the minimum language version
      • setMinimumLanguageVersion

        public void setMinimumLanguageVersion​(LanguageVersion minimumLanguageVersion)
        Description copied from interface: Rule
        Set the minimum LanguageVersion to which this Rule applies.
        Specified by:
        setMinimumLanguageVersion in interface Rule
        Parameters:
        minimumLanguageVersion - the minimum language version
      • getMaximumLanguageVersion

        public LanguageVersion getMaximumLanguageVersion()
        Description copied from interface: Rule
        Get the maximum LanguageVersion to which this Rule applies. If this value is null it indicates there is no maximum bound.
        Specified by:
        getMaximumLanguageVersion in interface Rule
        Returns:
        the maximum language version
      • setMaximumLanguageVersion

        public void setMaximumLanguageVersion​(LanguageVersion maximumLanguageVersion)
        Description copied from interface: Rule
        Set the maximum LanguageVersion to which this Rule applies.
        Specified by:
        setMaximumLanguageVersion in interface Rule
        Parameters:
        maximumLanguageVersion - the maximum language version
      • isDeprecated

        public boolean isDeprecated()
        Description copied from interface: Rule
        Gets whether this Rule is deprecated. A deprecated Rule is one which:
        • is scheduled for removal in a future version of PMD
        • or, has been removed and replaced with a non-functioning place-holder and will be completely removed in a future version of PMD
        • or, has been renamed/moved and the old name will be completely removed in a future version of PMD
        Specified by:
        isDeprecated in interface Rule
        Returns:
        true if this rule is deprecated
      • setDeprecated

        public void setDeprecated​(boolean deprecated)
        Description copied from interface: Rule
        Sets whether this Rule is deprecated.
        Specified by:
        setDeprecated in interface Rule
        Parameters:
        deprecated - whether this rule is deprecated
      • getName

        public String getName()
        Description copied from interface: Rule
        Get the name of this Rule.
        Specified by:
        getName in interface PropertySource
        Specified by:
        getName in interface Rule
        Returns:
        the name
      • setName

        public void setName​(String name)
        Description copied from interface: Rule
        Set the name of this Rule.
        Specified by:
        setName in interface Rule
        Parameters:
        name - the name
      • getSince

        public String getSince()
        Description copied from interface: Rule
        Get the version of PMD in which this Rule was added. Return null if not applicable.
        Specified by:
        getSince in interface Rule
        Returns:
        version of PMD since when this rule was added
      • setSince

        public void setSince​(String since)
        Description copied from interface: Rule
        Set the version of PMD in which this Rule was added.
        Specified by:
        setSince in interface Rule
        Parameters:
        since - the version of PMD since when this rule was added
      • getRuleClass

        public String getRuleClass()
        Description copied from interface: Rule
        Get the implementation class of this Rule.
        Specified by:
        getRuleClass in interface Rule
        Returns:
        the implementation class name of this rule.
      • setRuleClass

        public void setRuleClass​(String ruleClass)
        Description copied from interface: Rule
        Set the class of this Rule.
        Specified by:
        setRuleClass in interface Rule
        Parameters:
        ruleClass - the class name of this rule.
      • getRuleSetName

        public String getRuleSetName()
        Description copied from interface: Rule
        Get the name of the RuleSet containing this Rule.
        Specified by:
        getRuleSetName in interface Rule
        Returns:
        the name of th ruleset containing this rule.
        See Also:
        RuleSet
      • setRuleSetName

        public void setRuleSetName​(String ruleSetName)
        Description copied from interface: Rule
        Set the name of the RuleSet containing this Rule.
        Specified by:
        setRuleSetName in interface Rule
        Parameters:
        ruleSetName - the name of the ruleset containing this rule.
        See Also:
        RuleSet
      • getMessage

        public String getMessage()
        Description copied from interface: Rule
        Get the message to show when this Rule identifies a violation.
        Specified by:
        getMessage in interface Rule
        Returns:
        the message to show for a violation.
      • setMessage

        public void setMessage​(String message)
        Description copied from interface: Rule
        Set the message to show when this Rule identifies a violation.
        Specified by:
        setMessage in interface Rule
        Parameters:
        message - the message to show for a violation.
      • getDescription

        public String getDescription()
        Description copied from interface: Rule
        Get the description of this Rule.
        Specified by:
        getDescription in interface Rule
        Returns:
        the description
      • setDescription

        public void setDescription​(String description)
        Description copied from interface: Rule
        Set the description of this Rule.
        Specified by:
        setDescription in interface Rule
        Parameters:
        description - the description
      • getExamples

        public List<String> getExamples()
        Description copied from interface: Rule
        Get the list of examples for this Rule.
        Specified by:
        getExamples in interface Rule
        Returns:
        the list of examples for this rule.
      • addExample

        public void addExample​(String example)
        Description copied from interface: Rule
        Add a single example for this Rule.
        Specified by:
        addExample in interface Rule
        Parameters:
        example - a single example to add
      • getExternalInfoUrl

        public String getExternalInfoUrl()
        Description copied from interface: Rule
        Get a URL for external information about this Rule.
        Specified by:
        getExternalInfoUrl in interface Rule
        Returns:
        the URL for external information about this rule.
      • setExternalInfoUrl

        public void setExternalInfoUrl​(String externalInfoUrl)
        Description copied from interface: Rule
        Set a URL for external information about this Rule.
        Specified by:
        setExternalInfoUrl in interface Rule
        Parameters:
        externalInfoUrl - the URL for external information about this rule.
      • getPriority

        public RulePriority getPriority()
        Description copied from interface: Rule
        Get the priority of this Rule.
        Specified by:
        getPriority in interface Rule
        Returns:
        the priority
      • setPriority

        public void setPriority​(RulePriority priority)
        Description copied from interface: Rule
        Set the priority of this Rule.
        Specified by:
        setPriority in interface Rule
        Parameters:
        priority - the priority
      • setUsesDFA

        @Deprecated
        public void setUsesDFA()
        Deprecated.
        Description copied from interface: Rule
        Sets whether this Rule uses Data Flow Analysis.
        Specified by:
        setUsesDFA in interface Rule
      • setDfa

        public void setDfa​(boolean isDfa)
        Description copied from interface: Rule
        Sets whether this Rule uses Data Flow Analysis.
        Specified by:
        setDfa in interface Rule
      • usesDFA

        @Deprecated
        public boolean usesDFA()
        Deprecated.
        Description copied from interface: Rule
        Gets whether this Rule uses Data Flow Analysis.
        Specified by:
        usesDFA in interface Rule
        Returns:
        true if Data Flow Analysis is used.
      • isDfa

        public boolean isDfa()
        Description copied from interface: Rule
        Gets whether this Rule uses Data Flow Analysis.
        Specified by:
        isDfa in interface Rule
        Returns:
        true if Data Flow Analysis is used.
      • setUsesTypeResolution

        @Deprecated
        public void setUsesTypeResolution()
        Deprecated.
        Description copied from interface: Rule
        Sets whether this Rule uses Type Resolution.
        Specified by:
        setUsesTypeResolution in interface Rule
      • setTypeResolution

        public void setTypeResolution​(boolean usingTypeResolution)
        Description copied from interface: Rule
        Sets whether this Rule uses Type Resolution.
        Specified by:
        setTypeResolution in interface Rule
      • usesTypeResolution

        @Deprecated
        public boolean usesTypeResolution()
        Deprecated.
        Description copied from interface: Rule
        Gets whether this Rule uses Type Resolution.
        Specified by:
        usesTypeResolution in interface Rule
        Returns:
        true if Type Resolution is used.
      • isTypeResolution

        public boolean isTypeResolution()
        Description copied from interface: Rule
        Gets whether this Rule uses Type Resolution.
        Specified by:
        isTypeResolution in interface Rule
        Returns:
        true if Type Resolution is used.
      • setUsesMultifile

        @Deprecated
        public void setUsesMultifile()
        Deprecated.
        Description copied from interface: Rule
        Sets whether this Rule uses multi-file analysis.
        Specified by:
        setUsesMultifile in interface Rule
      • setMultifile

        public void setMultifile​(boolean multifile)
        Description copied from interface: Rule
        Sets whether this Rule uses multi-file analysis.
        Specified by:
        setMultifile in interface Rule
      • usesMultifile

        @Deprecated
        public boolean usesMultifile()
        Deprecated.
        Description copied from interface: Rule
        Gets whether this Rule uses multi-file analysis.
        Specified by:
        usesMultifile in interface Rule
        Returns:
        true if the multi file analysis is used.
      • isMultifile

        public boolean isMultifile()
        Description copied from interface: Rule
        Gets whether this Rule uses multi-file analysis.
        Specified by:
        isMultifile in interface Rule
        Returns:
        true if the multi file analysis is used.
      • usesRuleChain

        @Deprecated
        public boolean usesRuleChain()
        Deprecated.
        Description copied from interface: Rule
        Gets whether this Rule uses the RuleChain.
        Specified by:
        usesRuleChain in interface Rule
        Returns:
        true if RuleChain is used.
      • isRuleChain

        public boolean isRuleChain()
        Description copied from interface: Rule
        Gets whether this Rule uses the RuleChain.
        Specified by:
        isRuleChain in interface Rule
        Returns:
        true if RuleChain is used.
      • getRuleChainVisits

        public List<String> getRuleChainVisits()
        Description copied from interface: Rule
        Gets the collection of AST node names visited by the Rule on the RuleChain.
        Specified by:
        getRuleChainVisits in interface Rule
        Returns:
        the list of AST node names
      • addRuleChainVisit

        public void addRuleChainVisit​(Class<? extends Node> nodeClass)
        Description copied from interface: Rule
        Adds an AST node by class to be visited by the Rule on the RuleChain.
        Specified by:
        addRuleChainVisit in interface Rule
        Parameters:
        nodeClass - the AST node to add to the RuleChain visit list
      • addRuleChainVisit

        public void addRuleChainVisit​(String astNodeName)
        Description copied from interface: Rule
        Adds an AST node by name to be visited by the Rule on the RuleChain.
        Specified by:
        addRuleChainVisit in interface Rule
        Parameters:
        astNodeName - the AST node to add to the RuleChain visit list as string
      • start

        public void start​(RuleContext ctx)
        Description copied from interface: Rule
        Start processing. Called once, before apply() is first called.
        Specified by:
        start in interface Rule
        Parameters:
        ctx - the rule context
      • end

        public void end​(RuleContext ctx)
        Description copied from interface: Rule
        End processing. Called once, after apply() is last called.
        Specified by:
        end in interface Rule
        Parameters:
        ctx - the rule context
      • asCtx

        protected final RuleContext asCtx​(Object ctx)
        Cast the argument to a RuleContext. Use it to report violations:
        
          asCtx(data).addViolation(node);
          asCtx(data).addViolationWithMessage(node, "Some message");
         
        In PMD 7, rules will have type-safe access to a RuleContext, and this will be deprecated as useless. In PMD 6, you can use this to stop using the deprecated addViolation(Object, Node) overloads of this class.
      • equals

        public boolean equals​(Object o)
        Rules are equal if:
        1. They have the same implementation class.
        2. They have the same name.
        3. They have the same priority.
        4. They share the same properties.
        Overrides:
        equals in class Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • deepCopy

        public Rule deepCopy()
        Description copied from interface: Rule
        Creates a new copy of this rule.
        Specified by:
        deepCopy in interface Rule
        Returns:
        A new exact copy of this rule