Files
codeql-cpp-ast/README.org
2021-09-09 18:02:49 -07:00

42 lines
1.2 KiB
Org Mode

* AST Sample for C++ Source
Create dot output from query and db, and then get a rendered graph in SVG.
#+BEGIN_SRC sh
#
export PATH=$HOME/local/vmsync/codeql250:"$PATH"
# Build db
cd ~/w/codeql-cpp/src/
codeql database create -j8 -v --language=cpp --command="clang example.cpp" -s . example.db
# Edit printast.ql in editor to select function
# Create dot graph
cd ~/w/codeql-cpp/queries/
codeql database analyze \
~/w/codeql-cpp/src/example.db/ \
~/w/codeql-cpp/queries/printast.ql \
-j8 -v --ram=16000 \
--format=dot \
--output=printast.dot
# Query produced .dot file
cd ~/w/codeql-cpp/
ls queries/printast.dot/cpp/print-ast.dot
# Query produced .bqrs file
ls src/example.db/results/ast-queries-cpp/printast.bqrs
# Generate SVG
cd ~/w/codeql-cpp/queries/printast.dot/cpp
dot -Tsvg < ./print-ast.dot > ./print-ast.svg
open -a safari ./print-ast.svg
#+END_SRC
#+CAPTION: AST graph from dot
#+NAME: fig:graph-ast-1
[[./queries/printast.dot/cpp/print-ast.svg]]