1.python生成AST
官方文档:https://docs.python.org/3/library/ast.html 官方使用的是Cpython解释器的ast包 这样生成的AST不是可视化,如果要可视化的AST推荐ctree 参考链接:https://ucb-sejits.github.io/ctree-docs/ipythontips.html
- 安装ipython
Ubuntu默认的python为2,所以如果要使用ipython3需要运行
sudo apt-get install ipython3
其实ipython就是jupyter notebook 2.安装ctree包
pip install ctree
- 测试代码
import ctree
def f(a):
for x in range(10):
a[x] += x
tree1 = ctree.get_ast(f)
ctree.ipython_show_ast(tree1)
输出就是AST可视化树,如下图所示
2.python生成CFG
使用github项目: PythonStaticAnalysis 使用conda创建python=3.7环境
conda env -n pysa python=3.7
安装依赖包
pip install -r requirements.txt
运行代码
python runAnalysis.py -t ast -s "def gcd(a, b):
if a<b:
c: int = a
a: int = b
b: int = c
while b != 0 :
c: int = a
a: int = b
b: int = c % b
return a"
或者脚本
./runSample.sh
结果在output文件夹里
|