#!/usr/bin/python3 # Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. # For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md # Script detecting source files which are compiled twice and listing libraries where they are compiled # Usage example: ./catch_duplicates.py ../build-rt1051-Release/compile_commands.json > what_compiles_twice.log import sys, json def print_duplicates(filename, occurs): print_duplicates.duplicate_number += 1 print("Duplicate " + str(print_duplicates.duplicate_number) + "\n" + filename) for val in occurs: print(val) print("") print_duplicates.duplicate_number = 0 def main(): file_handle = open(sys.argv[1], "r") cc_dict = json.load(file_handle) known_files = set() for x in range(len(cc_dict)): filename1 = str(cc_dict[x]['file']) directory1 = str(cc_dict[x]['directory']) occurs = set() occurs.add(directory1) if filename1 not in known_files: for y in range(len(cc_dict)): filename2 = str(cc_dict[y]['file']) directory2 = str(cc_dict[y]['directory']) if filename1 == filename2 and x != y: occurs.add(directory2) if len(occurs) > 1: print_duplicates(filename1, occurs) known_files.add(filename1) file_handle.close() if __name__ == '__main__': main()