Class RuleSet

  • All Implemented Interfaces:
    ChecksumAware

    public class RuleSet
    extends java.lang.Object
    implements ChecksumAware
    This class represents a collection of rules along with some optional filter patterns that can preclude their application on specific files.
    See Also:
    Rule
    • Constructor Detail

      • RuleSet

        public RuleSet​(RuleSet rs)
    • Method Detail

      • size

        public int size()
        Returns the number of rules in this ruleset
        Returns:
        an int representing the number of rules
      • getRules

        public java.util.Collection<Rule> getRules()
        Returns the actual Collection of rules in this ruleset
        Returns:
        a Collection with the rules. All objects are of type Rule
      • getRuleByName

        public Rule getRuleByName​(java.lang.String ruleName)
        Returns the first Rule found with the given name (case-sensitive). Note: Since we support multiple languages, rule names are not expected to be unique within any specific ruleset.
        Parameters:
        ruleName - the exact name of the rule to find
        Returns:
        the rule or null if not found
      • applies

        public boolean applies​(java.io.File file)
        Check if a given source file should be checked by rules in this RuleSet. A file should not be checked if there is an exclude pattern which matches the file, unless there is an include pattern which also matches the file. In other words, include patterns override exclude patterns.
        Parameters:
        file - the source file to check
        Returns:
        true if the file should be checked, false otherwise
      • start

        public void start​(RuleContext ctx)
        Triggers that start lifecycle event on each rule in this ruleset. Some rules perform initialization tasks on start.
        Parameters:
        ctx - the current context
      • apply

        public void apply​(java.util.List<? extends Node> acuList,
                          RuleContext ctx)
        Executes the rules in this ruleset against each of the given nodes.
        Parameters:
        acuList - the node list, usually the root nodes like compilation units
        ctx - the current context
      • applies

        public static boolean applies​(Rule rule,
                                      LanguageVersion languageVersion)
        Does the given Rule apply to the given LanguageVersion? If so, the Language must be the same and be between the minimum and maximums versions on the Rule.
        Parameters:
        rule - The rule.
        languageVersion - The language version.
        Returns:
        true if the given rule matches the given language, which means, that the rule would be executed.
      • end

        public void end​(RuleContext ctx)
        Triggers the end lifecycle event on each rule in the ruleset. Some rules perform a final summary calculation or cleanup in the end.
        Parameters:
        ctx - the current context
      • equals

        public boolean equals​(java.lang.Object o)
        Two rulesets are equals, if they have the same name and contain the same rules.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        o - the other ruleset to compare with
        Returns:
        true if o is a ruleset with the same name and rules, false otherwise
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getFileName

        public java.lang.String getFileName()
      • getName

        public java.lang.String getName()
      • getDescription

        public java.lang.String getDescription()
      • getExcludePatterns

        public java.util.List<java.lang.String> getExcludePatterns()
      • getIncludePatterns

        public java.util.List<java.lang.String> getIncludePatterns()
      • usesDFA

        @Deprecated
        public boolean usesDFA​(Language language)
        Deprecated.
        Does any Rule for the given Language use the DFA layer?
        Parameters:
        language - The Language.
        Returns:
        true if a Rule for the Language uses the DFA layer, false otherwise.
      • usesTypeResolution

        @Deprecated
        public boolean usesTypeResolution​(Language language)
        Deprecated.
        Does any Rule for the given Language use Type Resolution?
        Parameters:
        language - The Language.
        Returns:
        true if a Rule for the Language uses Type Resolution, false otherwise.
      • usesMultifile

        @Deprecated
        public boolean usesMultifile​(Language language)
        Deprecated.
        Does any Rule for the given Language use multi-file analysis?
        Parameters:
        language - The Language.
        Returns:
        true if a Rule for the Language uses multi file analysis, false otherwise.
      • removeDysfunctionalRules

        public void removeDysfunctionalRules​(java.util.Collection<Rule> collector)
        Remove and collect any misconfigured rules.
        Parameters:
        collector - the removed rules will be added to this collection
      • getChecksum

        public long getChecksum()
        Description copied from interface: ChecksumAware
        Retrieves the current instance checksum
        Specified by:
        getChecksum in interface ChecksumAware
        Returns:
        The current checksum