無料のソースコードアナライザーを探しています(関数の依存関係ツリー)[終了]
-
05-07-2019 - |
質問
Cソースを分析し、機能的な依存関係ツリーを出力するWindowsで実行されているユーティリティ/アプリケーションの場所を知っている人はいますか?
探しているのは、次のようなものです:
PrintString-> PrintCharacter-> PrintByte-> Printf
解決
ほぼ間違いなく過剰ですが、 Doxygenを使用して、C、C ++、PHP、Java、C#などでこれを実行できます。 ( Graphvizドットがインストールされている場合)。 こちらは、Doxygen / dotによって生成されたサンプルコールツリーのあるページです。
>DoxygenはWindows上で正常に動作し、 HTMLおよび他のいくつかの形式を出力できます。
他のヒント
ソースを読み取りますが、深い意味でプログラミング言語を理解していないツールは、呼び出しグラフの近似値を提供するだけです。 (マクロ内で呼び出しが発生した場合、無効なプリプロセッサ条件内で呼び出しが発生した場合はどうなりますか?呼び出しが間接的な場合はどうなりますか?) これで十分であり、間接呼び出しが何をするかを本当に気にしないのであれば、DoxygenやCScopeのようなツールが役立つでしょう。
正確な呼び出しグラフが必要な場合は、言語の完全な知識を使用してツールを構築する必要があります。 Frama-C(他の回答を参照)AFAIKは1つですが、マクロと間接呼び出しをどのように処理するかはわかりません。
無料ではありませんが、 DMS Software Reengineering ToolkitとそのCフロントエンド完全なCマクロ/プリプロセッサ処理機能、およびファイルシステムの呼び出しグラフの構築。具体的には、コールグラフの構成にポイントツー分析が含まれており、間接的な関数呼び出しの行き先を控えめに近似できます。 コールグラフの例を参照してください。黒いアーク(直接呼び出し)と青いアーク(控えめに)分析)間接呼び出し。
多くのツールがこの種のコールグラフを作成します。 Doxygenは、「リテラシープログラミング」であるため、結果に対して最も多くのプレゼンテーションオプションを持つ可能性があります。その核となるツール。 http://frama-c.cea.fr/ のオープンソースツールは、コールグラフを生成します。 (これもドット形式で)、「サービス」で機能をグループ化しようとします。自動的に: http://img23.yfrog.com/img23/8180/9il.png
CodeInsightは、CTAGS / CSCOPEの機能が組み込まれた商用エディターです。コールツリーグラフ(およびその他のほとんどの関係)も表示できます。
Source Navigatorは再び開発中のようです(SourceNav NGの最新リリースは今年2月でした)。 Source Navigatorは、コールツリー、クラスの依存関係などを提供できます。最近のバージョンは試していません。 WindowsまたはX11で動作します。