Class RuleSets


  • public class RuleSets
    extends java.lang.Object
    Grouping of Rules per Language in a RuleSet.
    Author:
    pieter_van_raemdonck - Application Engineers NV/SA - www.ae.be
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addRuleSet​(RuleSet ruleSet)
      Add a ruleset for a language.
      boolean applies​(java.io.File file)
      Check if a given source file should be checked by rules in this RuleSets.
      void apply​(java.util.List<Node> acuList, RuleContext ctx, Language language)
      Apply all applicable rules to the compilation units.
      void end​(RuleContext ctx)
      Notify all rules of the end of processing.
      java.util.Set<Rule> getAllRules()
      Return all rules from all rulesets.
      RuleSet[] getAllRuleSets()
      Get all the RuleSets.
      long getChecksum()
      Retrieves a checksum of the rulesets being used.
      Rule getRuleByName​(java.lang.String ruleName)
      Returns the first Rule found with the given name.
      java.util.Iterator<RuleSet> getRuleSetsIterator()  
      void removeDysfunctionalRules​(java.util.Collection<Rule> collector)
      Remove and collect any rules that report problems.
      int ruleCount()
      Determines the total count of rules that are used in all rule sets.
      void start​(RuleContext ctx)
      Notify all rules of the start of processing.
      boolean usesDFA​(Language language)
      Check if the rules that apply to a source of the given language use DFA.
      boolean usesMultifile​(Language language)
      Does any Rule for the given Language use multi-file analysis?
      boolean usesTypeResolution​(Language language)
      Does any Rule for the given Language use Type Resolution?
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RuleSets

        public RuleSets()
        Public constructor.
      • RuleSets

        public RuleSets​(RuleSets ruleSets)
        Copy constructor. Deep copies RuleSets.
        Parameters:
        ruleSets - The RuleSets to copy.
      • RuleSets

        public RuleSets​(RuleSet ruleSet)
        Public constructor. Add the given rule set.
        Parameters:
        ruleSet - the RuleSet
    • Method Detail

      • addRuleSet

        public void addRuleSet​(RuleSet ruleSet)
        Add a ruleset for a language. Only one ruleset can be added for a specific language. If ruleSet.getLanguage() is null, it is assumed to be a RuleSet of java rules.
        Parameters:
        ruleSet - the RuleSet
      • getAllRuleSets

        public RuleSet[] getAllRuleSets()
        Get all the RuleSets.
        Returns:
        RuleSet[]
      • getRuleSetsIterator

        public java.util.Iterator<RuleSet> getRuleSetsIterator()
      • getAllRules

        public java.util.Set<Rule> getAllRules()
        Return all rules from all rulesets.
        Returns:
        Set
      • applies

        public boolean applies​(java.io.File file)
        Check if a given source file should be checked by rules in this RuleSets.
        Parameters:
        file - the source file to check
        Returns:
        true if the file should be checked, false otherwise
      • start

        public void start​(RuleContext ctx)
        Notify all rules of the start of processing.
      • apply

        public void apply​(java.util.List<Node> acuList,
                          RuleContext ctx,
                          Language language)
        Apply all applicable rules to the compilation units. Applicable means the language of the rules must match the language of the source (@see applies).
        Parameters:
        acuList - the List of compilation units; the type these must have, depends on the source language
        ctx - the RuleContext
        language - the Language of the source
      • end

        public void end​(RuleContext ctx)
        Notify all rules of the end of processing.
      • usesDFA

        public boolean usesDFA​(Language language)
        Check if the rules that apply to a source of the given language use DFA.
        Parameters:
        language - the language of a source
        Returns:
        true if any rule in the RuleSet needs the DFA layer
      • getRuleByName

        public Rule getRuleByName​(java.lang.String ruleName)
        Returns the first Rule found with the given name. 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
      • ruleCount

        public int ruleCount()
        Determines the total count of rules that are used in all rule sets.
        Returns:
        the count
      • usesTypeResolution

        public boolean usesTypeResolution​(Language language)
        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

        public boolean usesMultifile​(Language language)
        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 rules that report problems.
        Parameters:
        collector -
      • getChecksum

        public long getChecksum()
        Retrieves a checksum of the rulesets being used. Any change to any rule of any ruleset should trigger a checksum change.
        Returns:
        The checksum for this ruleset collection.