我继承了一个庞大的代码库,我需要对其进行一些小改动。我想知道是否有实用程序可以解析python代码并给出函数之间的依赖关系,如果我对函数进行了更改,我想确保不打破其他函数,所以如果我可以在图中看到它,会让我的生活更轻松。在Python中创建依赖关系图
回答
- 通常为模块/包导入定义“依赖关系”。
您正在寻找的是可视化呼叫流程。
,您仍然可以不能保证你不会打破的功能:)
我的经验和解决方案:
很多时候,我发现呼叫流程数据不堪重负,图表太复杂。 所以我通常做的是跟踪部分功能的通话流程,我很感兴趣。
这是通过使用sys.settrace(...)函数完成的。在将呼叫流程生成为文本数据后,我使用graphviz生成调用图表。
- http://docs.python.org/library/sys.html
- On call tracing
- 为了生成图形,从networkX使用graphviz的解决方案。
[编辑:基于评论]
然后我零碎的解决方案更好地工作。只需插入代码并在您想要跟踪的函数上使用装饰器。你会看到延迟进入图片的空白,但可以解决。你不会直接得到完整的图片。
我一直在试图做到这一点,并作出了一个few post工作的理解。
+1最后一点关于保证。如果它能够遵循使用大量HOF和其他动态特性的许多类型的代码,我会非常感动。我认为它主要用于评估程序员的工作,这些程序员要么不够聪明以至于不能使用这些功能,要么足够聪明。 – aaronasterling 2010-11-12 01:16:16
我不是在寻找银子弹。我正在寻找更多的是给我一个大概的想法。 – anijhaw 2010-11-12 01:42:03
@anijhaw:那你明白了。 :) pycallgraph应该做你的工作。我还提供了更经常使用的解决方案,以了解正在发生的事情。这可以变得困难。尝试在扭曲的应用程序中跟踪呼叫。 – pyfunc 2010-11-12 01:46:12
- 1. 在Python中构建依赖关系图
- 2. Python依赖关系?
- 3. 创建JSON模式值依赖关系
- 4. Python模块依赖关系
- 5. Python Tkinter Spinbox依赖关系
- 6. Python模块依赖关系
- 7. 依赖关系的nuget依赖关系
- 8. 在xslt中建立依赖关系
- 9. 结构图 - 具有依赖关系的安装依赖关系
- 10. 更改依赖关系图
- 11. Android依赖关系图
- 12. 依赖关系
- 13. 无法在eclipse中的pom.xml中创建msqlconnector的依赖关系
- 14. Python中的循环依赖关系
- 15. 在安装过程中,Python pip不会构建依赖关系
- 16. 在用户控件中创建依赖关系的问题
- 17. 未在Gradle缓存中创建Gradle依赖关系?
- 18. 在续集中创建具有循环依赖关系的表,
- 19. 如何在automake中创建依赖关系?
- 20. 只在Maven中创建可执行jar与依赖关系
- 21. 如何在mysql中创建独特的依赖关系?
- 22. 我们如何创建Dagger 2的依赖关系图?
- 23. Xcode:创建依赖关系图时发生内部错误
- 24. 创建依赖关系图时发生内部错误:ASSERTION FAILURE
- 25. 如何从文本文件创建依赖关系图?
- 26. Gradle中的构建依赖关系树
- 27. maven force重建依赖项目(首先构建依赖关系)
- 28. 建立nuget依赖关系构建
- 29. StructureMap中的遍历依赖关系图
- 30. Visual Studio 2010中的依赖关系图
另请参阅http://stackoverflow.com/questions/798389/python-tool-that-builds-a-dependency-diagram-for-methods-of-a-class – Vanuan 2013-02-22 18:22:27