3

C++ コードベースを分析し、どのファイルにどのヘッダー ファイルが含まれているかをグラフィカルに表示し、冗長なインクルードを強調表示するツールを知っている人はいますか? 私は Understanding C++ を使用しましたが、高価であり、大規模な (そしてカプセル化が不十分な) コードベースではすぐに扱いにくくなりました。

4

2 に答える 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

これを試して

#include の依存関係を追跡するツール

また、独自のものを作成するのは非常に簡単な演習のようにも思えます。「冗長」を追加することには決定が含まれますが、より困難になる可能性があります。ifdefs などを解析して追跡する必要があります。しかし、依存関係のツリーを作成するだけなら、それは非常に簡単です。

于 2009-01-09T02:40:41.423 に答える