C/C++コードを理解する作業を容易にするためのツールの提案はありますか?私たちは、他の人が書いたソフトウェアの大部分を継承したばかりであり、すぐにそれに慣れる必要があります。このタスクを簡素化するツールに関するアドバイスはありますか?
SourceInsight および C++の理解 は、フローチャートを含むc/c ++コード分析のために入手できる最高のツールです。
プロファイリングソフトウェアにより、どの関数が呼び出されたかがわかります。
Linuxを使用できる場合は、 KCachegrind を試してください。
個人的には、デバッガーを使用しています。コードを実行して、その実行内容と、その実行が唯一の方法である場所を確認します。
ただし、(場合によっては)役立ついくつかのドキュメントジェネレーターで実行できます。良い例は doxygen です。
Doxygen は、EXTRACT_ALLオプションをオンにすると、マークアップを適用せずにコードからダイアグラムを生成するのに非常に適しています。 HAVE_DOT設定で生成されたダイアグラムを取得するには、 GraphViz がインストールされている必要があります。それをインストールし、DOT_PATHを空白のままにすると、Windowsでは正常に動作しますが、OS/Xでは、ドットツールの場所を直接指す必要があります。
ACM Queueには、doxygenとDTraceの使用について詳しく説明している優れた Code Spelunking の記事があります。
Linux(KDE)を使用している場合は、cscopeユーティリティに基づいて構築されたKScope。私が今までに使用した(そして常に使用する)最高の方法は、なにかを変更しなければならない、または自分のニーズに合わせてどのAPIを使用するかという、なじみのないコードの巨大な部分を掘り下げることです。その機能には相互参照データベースがあり、これはさまざまな方法で検索できます。シンボルのすべての参照、そのグローバル定義、関数の呼び出し元/呼び出し先の検索などができます。組み込みのIDEと、コールグラフを表示する機能もあります。
Doxygen graphvizを使用すると、特に準備していなくても、クラス関係図が得られます。
エジプトのようなツールがいくつかあります http://www.gson.org/egypt/egypt.html 動作しますが、コードのコンパイルに使用される予想されるGCCバージョンと正確なバージョンが一致する場合のみコールグラフジェネレーター。 codevizについても同じことが言えます http://www.csn.ul.ie/~mel/projects/codeviz/
その他のオプションは、cachegrindモードで使用されるvalgrindです(kcachegrindプログラムから追跡できるコールグラフのタイプを生成します。
しばらく前に Borland Together を使用し、コードからモデルを生成するというまともな仕事をしました。コードからシーケンス図を生成することさえできると思います。コードが混乱している場合は、モデルも混乱することに注意してください。そして、私が覚えているように、それは安くはありませんが、時々あなたは特別をキャッチすることができます。
個人的にVisual Studioデバッガーツールを使用しています。
「Caller Graph」機能が付属しているので、小さなボックスで内容を視覚化できます。また、コールスタックと通常の監視機能は通常、必要なすべてです
AspectBrowser もあり、Eclipse 3.4.0ではあまりうまく機能しません。
try AQtime 、呼び出されたすべての関数(およびかかった時間)を表示するプロファイリングツールです。分析の開始点と終了点を設定できます。 30日間の試用版があります。
私はVisustinという名前のツールを試しましたが、これはグラフィカルにはあまり優れていませんが、それが言うことを実行します:コードからのフローチャート。 http://www.aivosto.com/visustin.html
Rational QuantifyはNiceコールグラフも表示します。
doxygen は、関係グラフも生成する無料のドキュメント生成ツール(Javadocに類似)です。
Doxygen、それの良いところは、クラスの循環依存性の観点から、い/良いことをあなたのコードに知らせることです。そのため、コードをリファクタリングする必要がありますが、気に入らないかもしれません:-)
Slickeditは、知らないコードの大きなブロックをナビゲートするのに最適です。タグ機能を使用すると、機能的にコードを処理できます。どのファイルが含まれているかを処理する必要はありません。
理解できないメソッド、クラス、または変数に到達したら、タグをプッシュするだけでそのコードに移動し、コードを確認してから、タグをポップします。 (キーストロークにバインドされているため、非常に高速です)
Find-referencesを使用して、その関数/変数が使用されている場所を確認することもできます。
どのファイルが入っているのかを把握する必要がなく、時間を大幅に節約できます。