34

私はいくつかの小さな変更を加える必要がある巨大なコードベースを継承しました。関数に変更を加えた場合のように、Pythonコードを解析して関数間に依存関係を与えるユーティリティがあるかどうか疑問に思っていたので、他の関数を壊さないようにしたいので、図のようなグラフで見ることができれば私の生活が楽になるでしょう。

4

1 に答える 1

31
  • 通常、モジュール/パッケージのインポートには「依存関係」が定義されています。
  • あなたが探しているのは、視覚化されたコール フローです。

  • 機能を壊さないことを保証することはまだできません:)

  • 私の経験と解決策:

    コール フロー データが膨大で、図が複雑すぎることに何度も気づきました。したがって、私が通常行うのは、関数のコールフローを部分的にトレースすることです。興味があります。

    これは、sys.settrace(...) 関数を利用して行われます。コール フローをテキスト データとして生成した後、graphviz を使用してコール グラフを生成します。

[編集:コメントに基づく]

次に、私の断片的なソリューションがうまく機能します。コードを挿入し、トレースする関数でデコレータを使用するだけです。deferred が登場するギャップが見られますが、それは解決できます。全体像を直接把握することはできません。

私はそれをやろうとしており、その理解に役立ついくつかの投稿を作成しました.

于 2010-11-12T01:12:57.400 に答える