From a3aed444c16dfe699548e7bcd1387caad5f811b2 Mon Sep 17 00:00:00 2001 From: Kristen Newbury Date: Mon, 29 May 2023 08:58:29 -0400 Subject: [PATCH] Add explicit column ordering to to_csv writes in interfaces: sarif-pad-aggregates sarif-extract-scans --- bin/sarif-extract-scans | 3 +- bin/sarif-pad-aggregate | 3 +- sarif_cli/columns.py | 62 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 sarif_cli/columns.py diff --git a/bin/sarif-extract-scans b/bin/sarif-extract-scans index 7cf6376..2b7e371 100755 --- a/bin/sarif-extract-scans +++ b/bin/sarif-extract-scans @@ -16,6 +16,7 @@ import pathlib import sarif_cli.table_joins as tj import sarif_cli.table_joins_CLI as tj_CLI import sarif_cli.scan_tables as st +from sarif_cli import columns import sys # @@ -253,7 +254,7 @@ p.mkdir(exist_ok=True) def write(path, frame): with p.joinpath(path + ".csv").open(mode='wb') as fh: - frame.to_csv(fh, index=False, quoting=csv.QUOTE_NONNUMERIC) + frame.to_csv(fh, index=False, columns=columns.columns[path] , quoting=csv.QUOTE_NONNUMERIC) def _write_dataframes_of(tables_dataclass): for field in dc.fields(tables_dataclass): diff --git a/bin/sarif-pad-aggregate b/bin/sarif-pad-aggregate index b9c9796..4cc0385 100755 --- a/bin/sarif-pad-aggregate +++ b/bin/sarif-pad-aggregate @@ -11,6 +11,7 @@ import random from sarif_cli import scan_tables from sarif_cli import table_joins +from sarif_cli import columns # # Handle arguments @@ -133,4 +134,4 @@ for file_prefix in _extract_scans_tables.keys(): frame = (_extract_scans_tables[file_prefix][0] .astype(_table_output_dtypes[file_prefix])) with open(csv_fname, 'w') as fh: - frame.to_csv(fh, index=False, quoting=csv.QUOTE_NONNUMERIC) + frame.to_csv(fh, index=False, columns=columns.columns[file_prefix], quoting=csv.QUOTE_NONNUMERIC) diff --git a/sarif_cli/columns.py b/sarif_cli/columns.py new file mode 100644 index 0000000..76634c3 --- /dev/null +++ b/sarif_cli/columns.py @@ -0,0 +1,62 @@ +columns = { + "scans" : [ + "id", + "commit_id", + "project_id", + "db_create_start", + "db_create_stop", + "scan_start_date", + "scan_stop_date", + "tool_name" , + "tool_version" , + "tool_query_commit_id", + "sarif_file_name" , + "results_count" , + "rules_count" , +], +"results" : [ + 'id', + 'scan_id', + 'query_id', + 'query_kind', + 'query_precision', + 'query_severity', + 'query_tags', + 'codeFlow_id', + 'message' , + 'message_object' , + 'location' , + 'source_startLine', + 'source_startCol', + 'source_endLine' , + 'source_endCol' , + 'sink_startLine' , + 'sink_startCol', + 'sink_endLine' , + 'sink_endCol' , + 'source_object' , + 'sink_object' +], +"projects" : [ + "id" , + "project_name" , + "creation_date", + "repo_url" , + "primary_language" , + "languages_analyzed" +], +"codeflows" : [ +"codeflow_id", +"codeflow_index", +"threadflow_index", +"location_index", +"endColumn", +"endLine", +"startColumn", +"startLine", +"artifact_index", +"uri", +"uriBaseId", +"message" +] +} \ No newline at end of file