代码的有向无环图生成
Directed Acyclic Graph Generation for Code
是否有免费应用程序可以为代码中的所有函数自动生成有向无环图 (DAG)?我对为 Pycharm 中编辑的 Python 代码构建 DAG 特别感兴趣。
对于静态代码检查:在 PyCharm、select 项目的根文件夹中,然后按 Ctrl+Alt+Shift+u 为 class diagram.
编辑:
使用Alt+F7你可以看到selected函数在其他函数和方法中的用法。但这也不是一个项目中 所有 函数的图表。
您要搜索的内容(通常)对于静态代码分析是不可行的,因为整个调用图在程序执行期间高度依赖于条件跳转(if
子句)。没有真正的D(A)G.
想象一下此代码的 DAG 变体,例如:
def baz():
import datetime
if datetime.datetime.now().second % 2:
foo()
else:
bar()
baz -> foo
和 baz -> bar
都不是唯一可能的解决方案。
但是:
(1) 您的调试器可能会跟踪在一个特定的 运行 中执行的每个代码,并在 之后 显示实际 运行 中使用的函数图,包括他们彼此之间的关系。
(2) 没有针对一般情况的静态代码分析工具。对于为 luigi, pinball, airflow, dagobah, dask, and theano (comparisons 1, 2) 这样的 ETL 工作流框架编写的代码,可以在启动应用程序之前可视化代码执行。
有关详细信息,请参阅 awesome-pipeline 存储库。
是否有免费应用程序可以为代码中的所有函数自动生成有向无环图 (DAG)?我对为 Pycharm 中编辑的 Python 代码构建 DAG 特别感兴趣。
对于静态代码检查:在 PyCharm、select 项目的根文件夹中,然后按 Ctrl+Alt+Shift+u 为 class diagram.
编辑:
使用Alt+F7你可以看到selected函数在其他函数和方法中的用法。但这也不是一个项目中 所有 函数的图表。
您要搜索的内容(通常)对于静态代码分析是不可行的,因为整个调用图在程序执行期间高度依赖于条件跳转(if
子句)。没有真正的D(A)G.
想象一下此代码的 DAG 变体,例如:
def baz():
import datetime
if datetime.datetime.now().second % 2:
foo()
else:
bar()
baz -> foo
和 baz -> bar
都不是唯一可能的解决方案。
但是:
(1) 您的调试器可能会跟踪在一个特定的 运行 中执行的每个代码,并在 之后 显示实际 运行 中使用的函数图,包括他们彼此之间的关系。
(2) 没有针对一般情况的静态代码分析工具。对于为 luigi, pinball, airflow, dagobah, dask, and theano (comparisons 1, 2) 这样的 ETL 工作流框架编写的代码,可以在启动应用程序之前可视化代码执行。 有关详细信息,请参阅 awesome-pipeline 存储库。