代码的有向无环图生成

Directed Acyclic Graph Generation for Code

是否有免费应用程序可以为代码中的所有函数自动生成有向无环图 (DAG)?我对为 Pycharm 中编辑的 Python 代码构建 DAG 特别感兴趣。

对于静态代码检查:在 PyCharm、select 项目的根文件夹中,然后按 Ctrl+Alt+Shift+uclass diagram.

编辑:

使用Alt+F7你可以看到selected函数在其他函数和方法中的用法。但这也不是一个项目中 所有 函数的图表。 您要搜索的内容(通常)对于静态代码分析是不可行的,因为整个调用图在程序执行期间高度依赖于条件跳转(if 子句)。没有真正的D(A)G.

想象一下此代码的 DAG 变体,例如:

def baz():
    import datetime
    if datetime.datetime.now().second % 2:
        foo()
    else:
        bar()

baz -> foobaz -> bar 都不是唯一可能的解决方案。

但是:

(1) 您的调试器可能会跟踪在一个特定的 运行 中执行的每个代码,并在 之后 显示实际 运行 中使用的函数图,包括他们彼此之间的关系。

(2) 没有针对一般情况的静态代码分析工具。对于为 luigi, pinball, airflow, dagobah, dask, and theano (comparisons 1, 2) 这样的 ETL 工作流框架编写的代码,可以在启动应用程序之前可视化代码执行。 有关详细信息,请参阅 awesome-pipeline 存储库。