2010-11-12 142 views
22

我继承了一个庞大的代码库,我需要对其进行一些小改动。我想知道是否有实用程序可以解析python代码并给出函数之间的依赖关系,如果我对函数进行了更改,我想确保不打破其他函数,所以如果我可以在图中看到它,会让我的生活更轻松。在Python中创建依赖关系图

+0

另请参阅http://stackoverflow.com/questions/798389/python-tool-that-builds-a-dependency-diagram-for-methods-of-a-class – Vanuan 2013-02-22 18:22:27

回答

21
  • 通常为模块/包导入定义“依赖关系”。
  • 您正在寻找的是可视化呼叫流程。

  • ,您仍然可以不能保证你不会打破的功能:)

  • 我的经验和解决方案:

    很多时候,我发现呼叫流程数据不堪重负,图表太复杂。 所以我通常做的是跟踪部分功能的通话流程,我很感兴趣。

    这是通过使用sys.settrace(...)函数完成的。在将呼叫流程生成为文本数据后,我使用graphviz生成调用图表。

[编辑:基于评论]

然后我零碎的解决方案更好地工作。只需插入代码并在您想要跟踪的函数上使用装饰器。你会看到延迟进入图片的空白,但可以解决。你不会直接得到完整的图片。

我一直在试图做到这一点,并作出了一个few post工作的理解。

+4

+1最后一点关于保证。如果它能够遵循使用大量HOF和其他动态特性的许多类型的代码,我会非常感动。我认为它主要用于评估程序员的工作,这些程序员要么不够聪明以至于不能使用这些功能,要么足够聪明。 – aaronasterling 2010-11-12 01:16:16

+0

我不是在寻找银子弹。我正在寻找更多的是给我一个大概的想法。 – anijhaw 2010-11-12 01:42:03

+0

@anijhaw:那你明白了。 :) pycallgraph应该做你的工作。我还提供了更经常使用的解决方案,以了解正在发生的事情。这可以变得困难。尝试在扭曲的应用程序中跟踪呼叫。 – pyfunc 2010-11-12 01:46:12