Class RuleContext


  • public final class RuleContext
    extends Object
    The API for rules to report violations or errors during analysis. This forwards events to a FileAnalysisListener. It implements violation suppression by filtering some violations out, according to the ViolationSuppressors for the language.

    A RuleContext contains a Rule instance and violation reporting methods implicitly report only for that rule. Contrary to PMD 6, RuleContext is not unique throughout the analysis, a separate one is used per file and rule.

    • Method Detail

      • addViolation

        public void addViolation​(Node location)
        Record a new violation of the contextual rule, at the given node.
        Parameters:
        location - Location of the violation
      • addViolation

        public void addViolation​(Node location,
                                 Object... formatArgs)
        Record a new violation of the contextual rule, at the given node. The default violation message (Rule.getMessage()) is formatted using the given format arguments.
        Parameters:
        location - Location of the violation
        formatArgs - Format arguments for the message
        See Also:
        MessageFormat
      • addViolationWithMessage

        public void addViolationWithMessage​(Node location,
                                            String message)
        Record a new violation of the contextual rule, at the given node. The given violation message (Rule.getMessage()) is treated as a format string for a MessageFormat and should hence use appropriate escapes. No formatting arguments are provided.
        Parameters:
        location - Location of the violation
        message - Violation message
      • addViolationWithMessage

        public void addViolationWithMessage​(Node location,
                                            String message,
                                            Object... formatArgs)
        Record a new violation of the contextual rule, at the given node. The given violation message (Rule.getMessage()) is treated as a format string for a MessageFormat and should hence use appropriate escapes. The given formatting arguments are used.
        Parameters:
        location - Location of the violation
        message - Violation message
        formatArgs - Format arguments for the message
      • addViolationWithPosition

        public void addViolationWithPosition​(Node node,
                                             int beginLine,
                                             int endLine,
                                             String message,
                                             Object... formatArgs)
        Record a new violation of the contextual rule, at the given node. The position is refined using the given begin and end line numbers. The given violation message (Rule.getMessage()) is treated as a format string for a MessageFormat and should hence use appropriate escapes. The given formatting arguments are used.
        Parameters:
        node - Location of the violation
        message - Violation message
        formatArgs - Format arguments for the message
      • addViolationWithPosition

        @Experimental
        public void addViolationWithPosition​(Reportable reportable,
                                             AstInfo<?> astInfo,
                                             FileLocation location,
                                             String message,
                                             Object... formatArgs)
        Record a new violation of the contextual rule, at the given location (node or token). The position is refined using the given begin and end line numbers. The given violation message (Rule.getMessage()) is treated as a format string for a MessageFormat and should hence use appropriate escapes. The given formatting arguments are used.
        Experimental Status:
        This will probably never be stabilized, will instead be replaced by a fluent API or something to report violations. Do not use this outside of the PMD codebase. See [core] Add fluent API to report violations #5039.
        Parameters:
        reportable - Location of the violation (node or token) - only used to determine suppression
        astInfo - Info about the root of the tree (Node.getAstInfo())
        location - Report location of the violation
        message - Violation message
        formatArgs - Format arguments for the message