タスクを実行するためのスクリプトがたくさんあります。そして、それは非常に混乱しているので、私は本当にプロジェクトのコールグラフを知る必要があります。追加のHWとSWが必要なため、コードを実行できません。ただし、その背後にあるロジックを理解する必要があります。したがって、トレースやPythonパーサーの代わりにモジュールを使用してコールグラフを作成できるツール(Pythonファイルの実行を必要としない)があるかどうかを知る必要があります。私はC用のそのようなツールを持っていますが、Python用ではありません。
ありがとうございました。
34004 次
8 に答える
32
あなたはpycallgraphをチェックアウトしたいかもしれません:
また、このリンクでは、より手動のアプローチについて説明しています。
于 2012-12-20T00:32:08.957 に答える
5
つまり、そのようなツールは存在しません。Pythonは言語が非常に動的であるため、コードを実行せずにコールグラフを生成することはできません。
Pythonの非常に動的な機能のいくつかを明確に示すコードを次に示します。
class my_obj(object):
def __init__(self, item):
self.item = item
def item_to_power(self, power):
return self.item ** power
def strange_power_call(obj):
to_call = "item_to_power"
return getattr(obj, to_call)(4)
a = eval("my" + "_obj" + "(12)")
b = strange_power_call(a)
eval
のインスタンスを作成するために使用しており、そのメソッドの1つを呼び出すためにmy_obj
も使用していることに注意してください。getattr
これらは両方とも、Pythonの静的コールグラフを作成することを非常に困難にする方法です。さらに、モジュールをインポートする方法を分析するのは難しいあらゆる種類があります。
あなたの最善の策は、コードベースと紙のパッドを持って座って、手でメモを取り始めることだと思います。これには、コードベースに慣れることができるという二重の利点があり、解析が難しいシナリオに簡単にだまされることはありません。
于 2012-12-20T00:24:39.430 に答える