获取我使用的python库中的所有入口点? (静态分析)

时间:2013-02-22 16:13:28

标签: python static-analysis

我想检查我的python项目,因为它正在使用另一个模块的所有'apis'。

准确地说:我正在使用mercurial python代码的内部,我想得到一个列表,我需要检查哪些代码点在更新使用版本的mercurial时检查哪些。

我想我需要某种形式的静态分析。没有任何证据可以抵御恶意代码,但不仅仅是grep。

1 个答案:

答案 0 :(得分:0)

如果您的项目有测试套件,您可以在分析器下运行这些测试,它会为您收集所有函数调用的方便列表,然后您可以根据它们所在的模块进行排序/过滤(例如,如果它们在mercurial)。例如,通过cProfile运行程序,cProfile包含在大多数Python版本中,只需调用

即可

$ python -m cProfile -o myprog.prof path/to/myprog.py [program arguments]

您可以通过cProfile运行测试,或者如果您没有测试,您可以通过一些功能测试手动运行它来获取正常使用期间实际使用的mercurial API调用。

这不会像静态分析那样彻底,但它也可以让您更清楚地了解实际调用的函数。然后,您可以使用pstats module分析结果,或使用RunSnakeRun或(无耻插件)SnakeViz等图形配置文件查看器。