Code Duplication    Length = 24-25 lines in 4 locations

utils/rule_dir_stats.py 4 locations

@@ 139-163 (lines=25) @@
136
    print("\n")
137
138
139
def process_product_names(args, known_rules):
140
    result = rds.walk_rules_stats(args, known_rules, rds.product_names_oval, rds.product_names_remediation)
141
    affected_rules = result[0]
142
    affected_ovals = result[1]
143
    affected_remediations = result[2]
144
    affected_remediations_type = result[4]
145
    verbose_output = result[5]
146
147
    if not args.summary_only:
148
        print("Product Names Specifics:")
149
        for line in verbose_output:
150
            print(line)
151
        print("\n")
152
153
    print("Product Names Summary:")
154
    print("Total affected rules: %d" % affected_rules)
155
    if not args.fixes_only:
156
        print("Rules with differing products and OVAL names: %d / %d" % (affected_ovals, affected_rules))
157
    if not args.ovals_only:
158
        print("Rules with differing product and remediation names: %d / %d" % (affected_remediations, affected_rules))
159
        for r_type in ssg.build_remediations.REMEDIATION_TO_EXT_MAP:
160
            r_missing = affected_remediations_type[r_type]
161
            print("Rules with differing product and %s remediation names: %d / %d" % (r_type, r_missing, affected_rules))
162
163
    print("\n")
164
165
166
def process_introspection(args, known_rules):
@@ 112-136 (lines=25) @@
109
    print("\n")
110
111
112
def process_prodtypes(args, known_rules):
113
    result = rds.walk_rules_stats(args, known_rules, rds.prodtypes_oval, rds.prodtypes_remediation)
114
    affected_rules = result[0]
115
    affected_ovals = result[1]
116
    affected_remediations = result[2]
117
    affected_remediations_type = result[4]
118
    verbose_output = result[5]
119
120
    if not args.summary_only:
121
        print("Prodtypes Object Specifics:")
122
        for line in verbose_output:
123
            print(line)
124
        print("\n")
125
126
    print("Prodtypes Objects Summary:")
127
    print("Total affected rules: %d" % affected_rules)
128
    if not args.fixes_only:
129
        print("Rules with differing prodtypes between YAML and OVALs: %d / %d" % (affected_ovals, affected_rules))
130
    if not args.ovals_only:
131
        print("Rules with differing prodtypes between YAML and remediations: %d / %d" % (affected_remediations, affected_rules))
132
        for r_type in ssg.build_remediations.REMEDIATION_TO_EXT_MAP:
133
            r_missing = affected_remediations_type[r_type]
134
            print("Rules with differing prodtypes between YAML and %s remediations: %d / %d" % (r_type, r_missing, affected_rules))
135
136
    print("\n")
137
138
139
def process_product_names(args, known_rules):
@@ 85-109 (lines=25) @@
82
    print("\n")
83
84
85
def process_two_plus(args, known_rules):
86
    result = rds.walk_rules_stats(args, known_rules, rds.two_plus_oval, rds.two_plus_remediation)
87
    affected_rules = result[0]
88
    affected_ovals = result[1]
89
    affected_remediations = result[2]
90
    affected_remediations_type = result[4]
91
    verbose_output = result[5]
92
93
    if not args.summary_only:
94
        print("Two Plus Object Specifics:")
95
        for line in verbose_output:
96
            print(line)
97
        print("\n")
98
99
    print("Two Plus Objects Summary:")
100
    print("Total affected rules: %d" % affected_rules)
101
    if not args.fixes_only:
102
        print("Rules with two or more OVALs: %d / %d" % (affected_ovals, affected_rules))
103
    if not args.ovals_only:
104
        print("Rules with two or more remediations: %d / %d" % (affected_remediations, affected_rules))
105
        for r_type in ssg.build_remediations.REMEDIATION_TO_EXT_MAP:
106
            r_missing = affected_remediations_type[r_type]
107
            print("Rules with two or more %s remediations: %d / %d" % (r_type, r_missing, affected_rules))
108
109
    print("\n")
110
111
112
def process_prodtypes(args, known_rules):
@@ 59-82 (lines=24) @@
56
    return parser.parse_args()
57
58
59
def process_missing(args, known_rules):
60
    result = rds.walk_rules_stats(args, known_rules, rds.missing_oval, rds.missing_remediation)
61
    affected_rules = result[0]
62
    affected_ovals = result[1]
63
    affected_remediations = result[3]
64
    affected_remediations_type = result[4]
65
    verbose_output = result[5]
66
67
    if not args.summary_only:
68
        print("Missing Objects Specifics:")
69
        for line in verbose_output:
70
            print(line)
71
        print("\n")
72
73
    print("Missing Objects Summary:")
74
    print("Total affected rules: %d" % affected_rules)
75
    if not args.fixes_only:
76
        print("Rules with no OVALs: %d / %d" % (affected_ovals, affected_rules))
77
    if not args.ovals_only:
78
        print("Rules without any remediations: %d / %d" % (affected_remediations, affected_rules))
79
        for r_type in ssg.build_remediations.REMEDIATION_TO_EXT_MAP:
80
            r_missing = affected_remediations_type[r_type]
81
            print("Rules with no %s remediations: %d / %d" % (r_type, r_missing, affected_rules))
82
    print("\n")
83
84
85
def process_two_plus(args, known_rules):