35 lines
1.1 KiB
Python
Executable File
35 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import json
|
|
import sys
|
|
|
|
# Return whether SARIF file contains error-level results
|
|
def codeql_sarif_contain_error(filename):
|
|
with open(filename, 'r') as f:
|
|
s = json.load(f)
|
|
|
|
for run in s.get('runs', []):
|
|
rules_metadata = run['tool']['driver']['rules']
|
|
if not rules_metadata:
|
|
rules_metadata = run['tool']['extensions'][0]['rules']
|
|
|
|
for res in run.get('results', []):
|
|
if 'ruleIndex' in res:
|
|
rule_index = res['ruleIndex']
|
|
elif 'rule' in res and 'index' in res['rule']:
|
|
rule_index = res['rule']['index']
|
|
else:
|
|
continue
|
|
try:
|
|
rule_level = rules_metadata[rule_index]['defaultConfiguration']['level']
|
|
except IndexError as e:
|
|
print(e, rule_index, len(rules_metadata))
|
|
else:
|
|
if rule_level == 'error':
|
|
return True
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
if codeql_sarif_contain_error(sys.argv[1]):
|
|
sys.exit(1)
|