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("")