* Adding to / updating the typegraph

  1. Open the current graph in [[./typegraph-multi.pdf]] as reference
  2. Identify the element to update, e.g. Struct3739
  3. Find its uses via
     #+BEGIN_SRC sh
       ag 3739 bin sarif_cli
     #+END_SRC
     or so.
  4. Update or follow the steps in the found files; in this case
     #+BEGIN_SRC text
       sarif_cli/table_joins.py
       228:        .merge(sf(3739), how="left", left_on='id_or_value_at_index', right_on='struct_id', validate="1:m")

       sarif_cli/signature_multi.py
       135:    (   'Struct3739',
       147:    ('Array6785', ('array', (0, 'Struct3739')))]
     #+END_SRC
     1. First update the signature.  The file [[./sarif_cli/signature_multi.py]] has
        instructions for updating (or creating) a typegraph.

        The update from commit 0f070a6ae to 0f070a6ae+1 introduces the changes
        #+BEGIN_SRC text
          -    (   'Struct3739',
          +    (   'Struct3452',

          -    ('Array6785', ('array', (0, 'Struct3739')))]
          +    ('Array7481', ('array', (0, 'Struct3452')))]
        #+END_SRC

     2. Update the existing uses.  Ids are unique, so a simple search is enough:
        #+BEGIN_SRC sh
          cd ~/local/sarif-cli
          ag '(3739|6785)' bin sarif_cli

          sarif_cli/table_joins.py
          226:        af(6785)
          228:        .merge(sf(3739), how="left", left_on='id_or_value_at_index', right_on='struct_id', validate="1:m")
          236:               suffixes=("_6785", "_0177"), validate="1:m")

          sarif_cli/signature_multi.py
          26:start_node_2022_03_08 = 'Array6785'
        #+END_SRC

  5. Update the typegraph's pdf.  For this case,
     #+BEGIN_SRC sh
       cd ../data/treeio
       sarif-extract-multi -c multi-sarif-01.json none | \
           sarif-to-dot -u -t -f -n -d  - | dot -Tpdf > typegraph-multi.pdf

       mv typegraph-multi.pdf ../../notes/
     #+END_SRC

  6. Run the tests.  Currently, =*test*= files in [[../scripts/]].

  
      
