gpt4 book ai didi

python - 从多个Python文件生成函数调用树

转载 作者:行者123 更新时间:2023-12-01 04:56:18 31 4
gpt4 key购买 nike

我继承了一堆 Python 文件,并寻找一种方法来通过收集这些文件中已定义和调用的所有函数的信息来了解其中发生的情况。

文件示例(MainModule.py):

Import module1
Import module2
Import module3
 
...
Def func1():
...
Def func2():
...
 
result1 = Module1.funcX(args)
result2 = Module2.funcY(args)
...

通过查看此文件,我希望 IDE 报告此文件中定义了哪些函数(这是我可以使用 Wing IDE 执行的操作),以及哪些函数(在位于同一文件中的 .py 文件中定义)文件夹或项目)被调用。显然,我不想报告 Python 系统函数(例如 print() 等)的使用情况,而只想报告在我的项目内的文件中定义的那些函数(可以是文件夹,其实并不重要)。

因此,在这个示例中,我希望得到如下内容:在文件 MainFunction.py 中,分别从 Module1.py 文件和 Module2.py 文件调用函数 funcX 和 funcY。我将使用此信息在 Visio(或其他一些软件)中构建引用架构,我将在重构代码时使用该架构。

我知道在 WingIDE 中使用“查找使用点”和“转到定义”,但是通读 20 个文件来查找功能太麻烦了。

我使用过 PyScripter 和 WingIDE Pro,但似乎这些 IDE 缺乏此功能。什么IDE支持这种操作?如果没有,是否有其他直接的方法来实现这一目标?

最佳答案

通过静态分析生成动态语言的调用图实际上是不可能的(即使对于简单的示例可以进行近似)。因此,它通常是通过使用 pycallgraph ( https://pypi.python.org/pypi/pycallgraph ) 等在运行时动态完成的。

因此,Python 代码的良好单元测试覆盖率至关重要。如果缺乏单元测试,那么在解决重构之前提高单元测试覆盖率可能是非常有值(value)的一步。

这是之前的一个 StackOverflow 问题,也涉及到这一点:Build a Call graph in python including modules and functions?

关于python - 从多个Python文件生成函数调用树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27269604/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com