From cf8096446baeb23301de1d9c4ba83d3413bad303 Mon Sep 17 00:00:00 2001 From: Michael Hohn Date: Tue, 1 Feb 2022 22:41:29 -0800 Subject: [PATCH] sarif-to-dot: cleanup for and preparation for sarif table extraction --- bin/sarif-to-dot | 7 ++++--- ...f-structure-from-sarif-to-dot-v-0b13a29.pdf | Bin 18832 -> 0 bytes notes/sarif-structure-from-sarif-to-dot.pdf | Bin 0 -> 18112 bytes sarif_cli/signature.py | 17 ++++++++++------- 4 files changed, 14 insertions(+), 10 deletions(-) delete mode 100644 notes/sarif-structure-from-sarif-to-dot-v-0b13a29.pdf create mode 100644 notes/sarif-structure-from-sarif-to-dot.pdf diff --git a/bin/sarif-to-dot b/bin/sarif-to-dot index 6b1b528..62865f0 100755 --- a/bin/sarif-to-dot +++ b/bin/sarif-to-dot @@ -15,7 +15,8 @@ context = S.Context( "string" : "String", "int" : "Int", "bool" : "Bool" - }) + } +) parser = argparse.ArgumentParser(description='Produce a summary of signatures found in the sarif file.') parser.add_argument('file', metavar='sarif-file', type=str, help='input file, - for stdin') @@ -65,7 +66,7 @@ if args.dot_output: elif args.typedef_signatures: S._signature(args, sarif_struct, context) struct_graph = [(typedef, sig) for sig,typedef in context.sig_to_typedef.items()] - pprint(struct_graph, sys.stdout, indent=2) + pprint(struct_graph, sys.stdout, indent=4) else: - pprint(S._signature(args, sarif_struct, context), sys.stdout, indent=2) + pprint(S._signature(args, sarif_struct, context), sys.stdout, indent=4) diff --git a/notes/sarif-structure-from-sarif-to-dot-v-0b13a29.pdf b/notes/sarif-structure-from-sarif-to-dot-v-0b13a29.pdf deleted file mode 100644 index 38df544fad88f69d7b48168a5be258426944262f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18832 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 aZ(*R9O11-+p&MPWCqeJ6L1<^KSzdZ%Il diff --git a/notes/sarif-structure-from-sarif-to-dot.pdf b/notes/sarif-structure-from-sarif-to-dot.pdf new file mode 100644 index 0000000000000000000000000000000000000000..171e8620cc4fe4cae9b608b919668184767c8556 GIT binary patch literal 18112 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 typedef name map def shorthash(signature): return zlib.adler32(str(signature).encode('utf-8')) % 10000 - # # Signature formation # -def _signature_dict(args, elem, context): +def _signature_dict(args, elem, context: Context): """ Assemble and return the signature for a dictionary. """ # Collect signatures @@ -55,8 +54,10 @@ def _signature_dict(args, elem, context): # Give every unique struct a name and use a reference to it as value. if signature not in context.sig_to_typedef: context.sig_to_typedef[signature] = "Struct%04d" % shorthash(signature) - signature = context.sig_to_typedef[signature] - return signature + typedef = context.sig_to_typedef[signature] + return typedef + else: + return signature def _signature_list(args, elem, context): """ Assemble and return the signature for a Python list. @@ -79,8 +80,10 @@ def _signature_list(args, elem, context): # Give every unique array a name and use a reference to it as value. if signature not in context.sig_to_typedef: context.sig_to_typedef[signature] = "Array%04d" % shorthash(signature) - signature = context.sig_to_typedef[signature] - return signature + typedef = context.sig_to_typedef[signature] + return typedef + else: + return signature def _signature(args, elem, context): """ Assemble and return the signature for a list/dict/value structure.