在Python中为方法生成控制流图的最简单方法是什么?

use*_*807 13 python methods graph

我正在编写一个试图比较两种方法的程序.我想为所有匹配的方法生成控制流图(CFG),并使用拓扑排序来比较两个图.

saa*_*aaj 9

有一个 Python 包,staticfg它的作用正是从一段 Python 代码生成控制流图。

例如,将Rosseta 代码中的第一个快速排序 Python 片段放入中qsort.py,以下代码会生成其控制流图。

from staticfg import CFGBuilder

cfg = CFGBuilder().build_from_file('quick sort', 'qsort.py')
cfg.build_visual('qsort', 'png')
Run Code Online (Sandbox Code Playgroud)

快速排序

请注意,它似乎无法理解更高级的控制流(例如推导式)。


Kus*_*alP 5

RPythonPyPy背后的翻译工具链,它提供了一种方法来获取类型推断流程图(在pypy/rpython/flowspacePyPy项目的目录中).

在大多数情况下,这种方法效果很好,但不支持生成器.结果将是SSA形式,可能是好的或坏的,取决于你想要的.