1

これらのいずれかを実行できるコード分析または「リバースエンジニアリング」ツールはありますか?:

  • どのクラスがどのクラスのサブクラスであるかを計算する
  • どのクラスがどのクラスをインスタンス化するかを計算します - ( VS Class Designerのように)
  • どの関数がどの関数を呼び出すかを計算します - ( Call Stackのように)
4

3 に答える 3

1

どの関数がどの関数を呼び出すかを計算する

NDepend は、たとえば以下のスクリーンショットのようないくつかの便利なメソッドまたはクラスコール グラフを生成できます (画像のフル サイズはこちら)免責事項: 私はツールの開発者の 1 人です。

NDepend メソッド呼び出しグラフ

NDepend を使用してコール グラフを生成する方法の詳細については、こちらを参照してください。

どのクラスがどのクラスのサブクラスであるかを計算する

同じように、NDepend はクラス継承グラフを生成できます (クラス継承グラフを生成する説明はこちら)。

どのクラスがどのクラスをインスタンス化するかを計算する

NDependを使用すると、LINQ クエリ( CQLinqと呼ぶもの) を介してコード クエリを記述できます。CQLinq を使用すると、特定のクラスを作成するメソッドまたはクラスを要求できます。次に例を示します。

from m in Methods 
where m.CreateA("NUnit.Core.NUnitConfiguration")
select m

このような CQLinq クエリの結果をグラフ ビューにエクスポートして、依存関係を視覚的に表現できます。

補足として、CQLinq を使用すると、コード ルールを記述することもできます。デフォルトで200 を超えるコード ルールが提案されています。これらには、設計アーキテクチャコード品質コード進化命名規則デッド コード.NET Fx の使用に関するルールが含まれます。

CQLinq ルールは、Visual Studioでライブで検証することも、ビルド プロセス中に検証して HTML/javascript レポートでレポートすることもできます。

于 2010-10-19T13:17:08.487 に答える
1

Doxygen + GraphViz (写真の場合、doxygen には GraphViz が必要です)

これには最大の言語サポートがあり (言語を指定しなかったため)、ビューアーはブラウザーであるため、生成されると誰でも表示できるはずです。

文書化されていないメンバーでも生成し、ソース コードを含めるように doxygen を構成します。この方法では、ソース コードに関数宣言へのリンクが含まれ、ナビゲーションが簡単になります。

また、 Understand for C++など、言語に特化したツールもあります。

于 2009-01-17T19:59:44.087 に答える
0

2.0を理解する

...異なる言語で書かれたコードの部分間の依存関係を示します。CLA を使用すると、通話を簡単に追跡できます。複合言語分析

具体的には、この関数呼び出しツリーの画像です。

于 2009-01-17T20:18:43.677 に答える