0

我想检查我的一个 python 项目,了解它使用另一个模块的所有“api”。

准确地说:我正在使用 mercurial python 代码的内部结构,并且我想获得一个列表,其中列出了在更新使用的 mercurial 版本时需要检查哪些代码点。

我想我需要某种形式的静态分析。没有什么可以证明恶意代码,但比 grep 更好。

4

1 回答 1

0

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

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

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

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

于 2013-02-22T17:18:03.230 回答