mirror of
https://github.com/hohn/sarif-cli.git
synced 2025-12-16 09:13:04 +01:00
107 lines
2.7 KiB
Python
107 lines
2.7 KiB
Python
# csv status reporting
|
|
import csv
|
|
|
|
STATUS_NUM = 6
|
|
|
|
fieldnames = ['sarif_file', 'level', 'levelcode', 'message', "extra_info"]
|
|
|
|
warning_set = {
|
|
"success" : 0,
|
|
"zero_results" : 0,
|
|
"input_sarif_missing" : 0
|
|
}
|
|
|
|
#
|
|
# Setup csv status writer
|
|
#
|
|
def setup_csv_writer(filename):
|
|
with open(filename+'.csv', 'w', newline='') as file:
|
|
# global in module as singleton alt
|
|
global global_filename
|
|
global_filename = filename
|
|
csv_writer = csv.DictWriter(file, fieldnames)
|
|
csv_writer.writeheader()
|
|
|
|
#
|
|
# csv status write - one line for errors
|
|
#
|
|
def csv_write(data):
|
|
with open(global_filename+'.csv', 'a', newline='') as file:
|
|
csv_writer = csv.DictWriter(file, fieldnames)
|
|
csv_writer.writerow(data)
|
|
|
|
#
|
|
# csv status write - all at once for type of warnings that can
|
|
# happen multiple times
|
|
# and want success message last
|
|
#
|
|
def csv_write_warnings():
|
|
with open(global_filename+'.csv', 'a', newline='') as file:
|
|
csv_writer = csv.DictWriter(file, fieldnames)
|
|
if warning_set["input_sarif_missing"] != 0:
|
|
csv_writer.writerow(input_sarif_missing)
|
|
#reset in case later different types of warnings can be accumulated
|
|
input_sarif_missing["extra_info"] = "Missing: "
|
|
warning_set["input_sarif_missing"] = 0
|
|
if warning_set["success"] != 0:
|
|
csv_writer.writerow(success)
|
|
|
|
def setup_status_filenames(sarif_file_name):
|
|
success["sarif_file"] = sarif_file_name
|
|
zero_results["sarif_file"] = sarif_file_name
|
|
input_sarif_extra["sarif_file"] = sarif_file_name
|
|
input_sarif_missing["sarif_file"] = sarif_file_name
|
|
unknown_sarif_parsing_shape["sarif_file"] = sarif_file_name
|
|
unknown["sarif_file"] = sarif_file_name
|
|
|
|
success = {
|
|
"sarif_file": "",
|
|
"level": "SUCCESS",
|
|
"levelcode": 0,
|
|
"message": "File successfully processed."
|
|
}
|
|
|
|
zero_results = {
|
|
"sarif_file": "",
|
|
"level": "WARNING",
|
|
"levelcode": 1,
|
|
"message": "Zero results seen in sarif file."
|
|
}
|
|
|
|
input_sarif_missing = {
|
|
"sarif_file": "",
|
|
"level": "WARNING",
|
|
"levelcode": 2,
|
|
"message": "Input sarif is missing neccesary properties.",
|
|
"extra_info" : "Missing: "
|
|
}
|
|
|
|
# file load error can happen on either sarif file or scan-spec.json
|
|
file_load_error = {
|
|
"file": "",
|
|
"level": "ERROR",
|
|
"levelcode": 3,
|
|
"message": "Could not load file."
|
|
}
|
|
|
|
input_sarif_extra = {
|
|
"sarif_file": "",
|
|
"level": "ERROR",
|
|
"levelcode": 4,
|
|
"message": "Input sarif contains extra unneccesary properties."
|
|
}
|
|
|
|
unknown_sarif_parsing_shape = {
|
|
"sarif_file": "",
|
|
"level": "ERROR",
|
|
"levelcode": 5,
|
|
"message": "Error matching expected sarif format to actual input sarif shape.",
|
|
"extra_info" : ""
|
|
}
|
|
|
|
unknown = {
|
|
"sarif_file": "",
|
|
"level": "ERROR",
|
|
"levelcode": 6,
|
|
"message": "Error details currently undiagnosed. Assess log file for more information."
|
|
} |