python程序流程控制模板_利用python ast包,绘制python代码的cfg控制流程图

本文介绍了如何使用python的ast包和第三方库来绘制控制流图(CFG),特别关注用户定义的函数调用关系。在遇到一些错误和问题后,作者决定简化流程,仅处理函数定义和调用,忽略了多行注释、内部函数和类。通过提供简化版的代码示例,展示了如何实现这一目标。
摘要由CSDN通过智能技术生成

我的目的是辅助代码阅读,因此不需要太详细的信息,只需要看用户定义的函数的函数调用关系,忽略所有的内置函数。

一开始我试图寻找现成的轮子,在github上得偿所愿,https://github.com/coetaur0/staticfg,需要详细信息的朋友可以去看看,我总结了staticfg安装使用中的问题:

我的电脑上装了anaconda和pycharm,pycharm的解释器可以设置成anaconda中的python,这样就可以在pycharm中使用anaconda装的包。

在anaconda navigator中打开cmd.exe,可以直接使用pip命令来安装staticfg。pip会先安装astor库,如果超时的话就等它耗尽超时次数,然后重试。

pip成功安装之后,尝试readme中的demo,会报错,大意是说要将graphviz的可执行文件添加到环境变量。需要到http://www.graphviz.org/download/去下载,安装时可以选择自动添加到环境变量。然后readme中的斐波那契demo就可以正常分析了。

如果分析的py文件中有中文注释,会报unicode decode error,说gbk无法解码某一个byte。据说是因为python默认使用gbk。不用修改任何代码的一个解决方法是,python -X utf8 build_cfg.py [input] [output]。其中,build_cfg.py在clone下来的example目录下。

之后还可能会有另一个错误,在builder.py里,大意是+=的运算数不能是str和nonetype。这个问题貌似是输入文件中有strip函数引起的。如果可以顺利执行的话,生成的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值