| import json | |
| import multiprocessing | |
| import os | |
| import re | |
| import subprocess | |
| import sys | |
| def run_analyzer(data): | |
| os.chdir(data["directory"]) | |
| command = ( | |
| data["command"] | |
| + f" --analyze --analyzer-output html -o analyzer-results -Xclang -analyzer-config -Xclang max-nodes=75000" | |
| ) | |
| print(command) | |
| subprocess.run(command, shell=True, check=True) | |
| def pool_error(e): | |
| print("Error analyzing file:", e) | |
| def main(): | |
| db_path = sys.argv[1] | |
| database = json.load(open(db_path)) | |
| with multiprocessing.Pool() as pool: | |
| pool.map_async(run_analyzer, [k for k in database], error_callback=pool_error) | |
| pool.close() | |
| pool.join() | |
| if __name__ == "__main__": | |
| main() |