Reviewed By: mbouaziz Differential Revision: D6449403 fbshipit-source-id: a83b585master
parent
52c4c4c767
commit
7291731f48
@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Copyright (c) 2017 - present Facebook, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This source code is licensed under the BSD style license found in the
|
||||||
|
# LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
# of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def load_report(report_filename):
|
||||||
|
with open(report_filename, 'r') as file_in:
|
||||||
|
return json.load(file_in)
|
||||||
|
|
||||||
|
|
||||||
|
def compute_duplicates(report):
|
||||||
|
table = {}
|
||||||
|
for e in report:
|
||||||
|
bug_hash = e['hash']
|
||||||
|
if bug_hash in table:
|
||||||
|
table[bug_hash].append(e)
|
||||||
|
else:
|
||||||
|
table[bug_hash] = [e]
|
||||||
|
duplicates = []
|
||||||
|
for value in table.values():
|
||||||
|
if len(value) > 1:
|
||||||
|
duplicates += value
|
||||||
|
return duplicates
|
||||||
|
|
||||||
|
|
||||||
|
def save_duplicates(duplicates, output_filename):
|
||||||
|
duplicated_types = {}
|
||||||
|
for e in duplicates:
|
||||||
|
bug_type = e['bug_type']
|
||||||
|
if bug_type in duplicated_types:
|
||||||
|
duplicated_types[bug_type] += 1
|
||||||
|
else:
|
||||||
|
duplicated_types[bug_type] = 1
|
||||||
|
for bug_type, count in duplicated_types.items():
|
||||||
|
print('{} -> {}'.format(bug_type, count))
|
||||||
|
with open(output_filename, 'w') as file_out:
|
||||||
|
json.dump(duplicates, file_out, indent=2, separators=(',', ': '))
|
||||||
|
|
||||||
|
|
||||||
|
cli_parser = argparse.ArgumentParser()
|
||||||
|
cli_parser.add_argument('--report', type=str, required=True,
|
||||||
|
help='Infer report')
|
||||||
|
cli_parser.add_argument('--out', type=str, required=True,
|
||||||
|
help='Output list of duplicates (in JSON)')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
args = cli_parser.parse_args()
|
||||||
|
report = load_report(args.report)
|
||||||
|
duplicates = compute_duplicates(report)
|
||||||
|
save_duplicates(duplicates, args.out)
|
Loading…
Reference in new issue