C++ コードベースを分析し、どのファイルにどのヘッダー ファイルが含まれているかをグラフィカルに表示し、冗長なインクルードを強調表示するツールを知っている人はいますか? 私は Understanding C++ を使用しましたが、高価であり、大規模な (そしてカプセル化が不十分な) コードベースではすぐに扱いにくくなりました。
2 に答える
3
gcc/g++ には常に「-H」オプションがあります...
例: % g++ -H foo.C
'-H'
Print the name of each header file used, in addition to other
normal activities. Each name is indented to show how deep in the
'#include' stack it is. Precompiled header files are also
printed, even if they are found to be invalid; an invalid
precompiled header file is printed with '...x' and a valid one
with '...!' .
それで:
- 'sed' または 'awk' を使用して先頭の '...' を削除します。
- '同じ名前が隣接するように並べ替えます。
- 名前をカウントする「uniq -c」。
- 「grep -v」でシングルトンを削除します。
次のように:
% g++ -H foo.C |& awk '{print $2}' | sort | uniq -c | grep -v ' 1 '
それとも、それはあまりにも Linux 的 / unix 的ですか?
(Windows の下には、常に cygwin があります。)
于 2009-01-09T16:59:42.150 に答える
1
これを試して
また、独自のものを作成するのは非常に簡単な演習のようにも思えます。「冗長」を追加することには決定が含まれますが、より困難になる可能性があります。ifdefs などを解析して追跡する必要があります。しかし、依存関係のツリーを作成するだけなら、それは非常に簡単です。
于 2009-01-09T02:40:41.423 に答える