Uses the python AST to parse Python source code and build a call graph.
An example of the current output of the parser parsing itself.
pip install codegrapher
To generate graphs, graphviz must be installed.
To parse a file and output results to the console:
codegrapher path/to/file.py --printed
To parse a file and output results to a file:
codegrapher path/to/file.py --output output_file_name --output-type png
To analyze a directory of files, along with all files it contains:
codegrapher -r path/to/directory --output multiple_file_analysis
And if you have a list of functions that aren't useful in your graph, add it to a .cg_ignore file:
# cg_ignore file
# all lines beginning with '#' are ignored
# every function calls this, so it's not helpful in my graph:
log_error
# I don't want to see this in my graph:
parse
lower
Then add the --ignore flag to your command. Using the flag --remove-builtins provides the same functionality for ignoring items found in __builtins__.
To easily parse code in Python :
from codegrapher.parser import FileObject
file_object = FileObject('path/to/file.py')
file_object.visit()
And then to add that code to a graph and render it (using graphviz):
from codegrapher.graph import FunctionGrapher
graph = FunctionGrapher()
graph.add_file_to_graph(file_object)
graph.name = 'name.gv'
graph.format = 'png'
graph.render()
Which will produce your code as a png file, name.gv.png, along with a dot file name.gv
More documentation for the Python module can be found at Read the Docs.