Interface Rule

    • Field Detail

      • VIOLATION_SUPPRESS_REGEX_DESCRIPTOR

        static final StringProperty VIOLATION_SUPPRESS_REGEX_DESCRIPTOR
        The property descriptor to universally suppress violations with messages matching a regular expression.
      • VIOLATION_SUPPRESS_XPATH_DESCRIPTOR

        static final StringProperty 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
      • dependsOn

        @Experimental
        default boolean dependsOn​(AstProcessingStage<?> stage)
        Returns true if this rule depends on the given processing stage to run. If so, any ruleset including this rule, in which the rule is not misconfigured, will execute the analysis reified in the given stage before applying rules on the AST.

        The default returns false. Each language should implement this method in its abstract rule base class, and probably mark its implementation as final for consistency within the language implementation. AST processing stages are language-specific, and any non-trivial implementation should throw an IllegalArgumentException when given a stage that isn't defined on the language of the rule.

        Parameters:
        stage - Processing stage for which to check for a dependency.
        Returns:
        True if this rule depends on the given processing stage.
        Since:
        7.0.0
      • start

        void start​(RuleContext ctx)
        Start processing. Called once, 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, 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