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 38df544..0000000 Binary files a/notes/sarif-structure-from-sarif-to-dot-v-0b13a29.pdf and /dev/null differ 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 0000000..171e862 Binary files /dev/null and b/notes/sarif-structure-from-sarif-to-dot.pdf differ diff --git a/sarif_cli/signature.py b/sarif_cli/signature.py index a12fd98..59f9a27 100644 --- a/sarif_cli/signature.py +++ b/sarif_cli/signature.py @@ -30,16 +30,15 @@ import zlib # @dataclass class Context: - sig_to_typedef: dict # signature to typedef name map + sig_to_typedef: dict # signature -> 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.