def print_ruleset_summary()

in aristotle/aristotle.py [0:0]


    def print_ruleset_summary(self, sids, pfmod_sids=None):
        """Prints summary/truncated filtered ruleset to stdout.

        :param sids: list of SIDs.
        :type sids: list, required
        :param pfmod_sids: list of SID modified by PFMod.
        :type sids: list, optional
        :raises: `AristotleException`
        """
        print_debug("print_ruleset_summary() called")
        print("")
        # ignore disabled rules when printing summary
        enabled_sids = [s for s in sids if not self.metadata_dict[s]['disabled']]
        i = 0
        while i < len(enabled_sids):
            if i < self.summary_max:
                matchobj = rule_msg_re.search(self.metadata_dict[enabled_sids[i]]['raw_rule'])
                if not matchobj:
                    print_warning("Unable to extract rule msg from '{}'.".format(self.metadata_dict[enabled_sids[i]]['raw_rule']))
                    continue
                msg = matchobj.group("MSG")
                print("{} [sid:{}]".format(msg, enabled_sids[i]))
            else:
                break
            i += 1
        print("\n" + BLUE + "Showing {} of {} enabled rules{}".format(
            i,
            len(enabled_sids),
            " ({} rules total, including disabled)".format(len(sids)) if len(sids) != len(enabled_sids) else '') + RESET)
        if pfmod_sids is not None and len(sids) > 0:
            pfmod_ratio = float(float(len(pfmod_sids)) / float(len(sids)))
            print(BLUE + "SIDs modifed by PFMod: {} of {} ({:.1%})".format(len(pfmod_sids), len(sids), pfmod_ratio) + RESET)
            print_debug("SIDs NOT modified by PFMod: {}".format(list(set(sids) - set(pfmod_sids))))
        print("")