Interface Rule

  • All Superinterfaces:
    PropertySource
    All Known Implementing Classes:
    AbstractRule, AbstractVisitorRule, RuleReference, XPathRule

    public interface Rule
    extends PropertySource
    This is the basic Rule interface for PMD rules.

    Thread safety: PMD will create one instance of a rule per thread. The instances are not shared across different threads. However, a single rule instance is reused for analyzing multiple files.

    • Field Detail

      • VIOLATION_SUPPRESS_REGEX_DESCRIPTOR

        static final PropertyDescriptor<Optional<Pattern>> VIOLATION_SUPPRESS_REGEX_DESCRIPTOR
        The property descriptor to universally suppress violations with messages matching a regular expression.
      • VIOLATION_SUPPRESS_XPATH_DESCRIPTOR

        static final PropertyDescriptor<Optional<String>> VIOLATION_SUPPRESS_XPATH_DESCRIPTOR
        Name of the property to universally suppress violations on nodes which match a given relative XPath expression.
    • Method Detail

      • getLanguage

        Language getLanguage()
        Get the Language of this Rule.
        Returns:
        the language
      • setLanguage

        void setLanguage​(Language language)
        Set the Language of this Rule.
        Parameters:
        language - the language
      • getMinimumLanguageVersion

        LanguageVersion getMinimumLanguageVersion()
        Get the minimum LanguageVersion to which this Rule applies. If this value is null it indicates there is no minimum bound.
        Returns:
        the minimum language version
      • setMinimumLanguageVersion

        void setMinimumLanguageVersion​(LanguageVersion minimumLanguageVersion)
        Set the minimum LanguageVersion to which this Rule applies.
        Parameters:
        minimumLanguageVersion - the minimum language version
      • getMaximumLanguageVersion

        LanguageVersion getMaximumLanguageVersion()
        Get the maximum LanguageVersion to which this Rule applies. If this value is null it indicates there is no maximum bound.
        Returns:
        the maximum language version
      • setMaximumLanguageVersion

        void setMaximumLanguageVersion​(LanguageVersion maximumLanguageVersion)
        Set the maximum LanguageVersion to which this Rule applies.
        Parameters:
        maximumLanguageVersion - the maximum language version
      • isDeprecated

        boolean isDeprecated()
        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
        Returns:
        true if this rule is deprecated
      • setDeprecated

        void setDeprecated​(boolean deprecated)
        Sets whether this Rule is deprecated.
        Parameters:
        deprecated - whether this rule is deprecated
      • setName

        void setName​(String name)
        Set the name of this Rule.
        Parameters:
        name - the name
      • getSince

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

        void setSince​(String since)
        Set the version of PMD in which this Rule was added.
        Parameters:
        since - the version of PMD since when this rule was added
      • getRuleClass

        String getRuleClass()
        Get the implementation class of this Rule.
        Returns:
        the implementation class name of this rule.
      • setRuleClass

        void setRuleClass​(String ruleClass)
        Set the class of this Rule.
        Parameters:
        ruleClass - the class name of this rule.
      • getRuleSetName

        String getRuleSetName()
        Get the name of the RuleSet containing this Rule.
        Returns:
        the name of th ruleset containing this rule.
        See Also:
        RuleSet
      • setRuleSetName

        void setRuleSetName​(String name)
        Set the name of the RuleSet containing this Rule.
        Parameters:
        name - the name of the ruleset containing this rule.
        See Also:
        RuleSet
      • getMessage

        String getMessage()
        Get the message to show when this Rule identifies a violation.
        Returns:
        the message to show for a violation.
      • setMessage

        void setMessage​(String message)
        Set the message to show when this Rule identifies a violation.
        Parameters:
        message - the message to show for a violation.
      • getDescription

        String getDescription()
        Get the description of this Rule.
        Returns:
        the description
      • setDescription

        void setDescription​(String description)
        Set the description of this Rule.
        Parameters:
        description - the description
      • getExamples

        List<String> getExamples()
        Get the list of examples for this Rule.
        Returns:
        the list of examples for this rule.
      • addExample

        void addExample​(String example)
        Add a single example for this Rule.
        Parameters:
        example - a single example to add
      • getExternalInfoUrl

        String getExternalInfoUrl()
        Get a URL for external information about this Rule.
        Returns:
        the URL for external information about this rule.
      • setExternalInfoUrl

        void setExternalInfoUrl​(String externalInfoUrl)
        Set a URL for external information about this Rule.
        Parameters:
        externalInfoUrl - the URL for external information about this rule.
      • getPriority

        RulePriority getPriority()
        Get the priority of this Rule.
        Returns:
        the priority
      • setPriority

        void setPriority​(RulePriority priority)
        Set the priority of this Rule.
        Parameters:
        priority - the priority
      • initialize

        default void initialize​(LanguageProcessor languageProcessor)
        Initialize the rule using the language processor if needed.
        Parameters:
        languageProcessor - The processor for the rule's language
      • start

        void start​(RuleContext ctx)
        Start processing. Called once per file, before apply() is first called.
        Parameters:
        ctx - the rule context
      • apply

        void apply​(Node target,
                   RuleContext ctx)
        Process the given node. The nodes that are fed to this method are the nodes selected by getTargetSelector().
        Parameters:
        target - Node on which to apply the rule
        ctx - Rule context, handling violations
      • end

        void end​(RuleContext ctx)
        End processing. Called once per file, after apply() is last called.
        Parameters:
        ctx - the rule context
      • deepCopy

        Rule deepCopy()
        Creates a new copy of this rule.
        Returns:
        A new exact copy of this rule