OSS コードや他の人のコード (通常は C ベースですが、C++/Java の場合もあります) を変更する必要がある場合があり、コード フローに従ってシステムを理解しようとすると、型や関数宣言などのヘッダーを "grep" する必要があります。 . コードの閲覧を支援する優れたツールはありますか。型をクリックして宣言に移動したり、関数名をクリックしてその実装に移動したりできるようにしたいと思っています。私は Linux ボックスを使用しているため、「Visual Studio を使用するだけ」などの返信が必ずしもうまくいくとは限りません。ありがとう!
27 に答える
SourceInsightより優れたものはありません。
OpenGrokについて驚くべきことを聞いたことがあります。私の職場の別のチームがそれを使用していることを私は知っています。その Web サイトから:
OpenGrok は、高速で使いやすいソース コード検索および相互参照エンジンです。ソースツリーの検索、相互参照、ナビゲートに役立ちます。Mercurial、Git、SCCS、RCS、CVS、Subversion、Teamware、ClearCase、Perforce、Bazaar など、さまざまなプログラム ファイル形式とバージョン管理履歴を理解できます。言い換えれば、オープンソースを理解する (深く理解する) ことができるため、OpenGrok という名前が付けられました。Javaで書かれています。
Doxygenは、ソース ブラウザーを含む Web ページのセットを生成できます。IDE ほど凝ったものではありませんが、必要なのは Web ブラウザだけです。
私はカーネル空間で少しやり、スコープに戻ってきます。
例えば:
$ cd / usr / src / redhat / BUILD / kernel-version
$ cscope -R -p4
Find this C symbol:
Find this function definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:
他の誰かのプロジェクトに取り組んでいるとき、私は通常c-scopeに「住んでいます」。これを使用して、「gvim」(私のIDE)でファイルを開き、編集してから、「c-scope」に戻るのをやめます。これにより、タスクに集中できます。
人々が他のエディターを使用しているのを見たことはありますが、cscopeはvimとemacsで動作するように構成できると思います。
幸運を祈ります。
ctagsは非常に便利です。関係する2つのステップがあります。まず、すべてのソースでプログラムctagsを実行し、ディレクトリを含めます。これにより、ローカルディレクトリに「tags」という名前のファイルが作成されます。ctags * .c * .hは、すべてのソースが1つのディレクトリにある場合に問題ありません。複数のディレクトリでソースを操作する場合、複数の場所でctagsを実行する価値があります。次に、vi内で、任意の関数、定義されたタイプ、または変数にカーソルを合わせて、ctl-]を使用してそのエンティティの定義に移動します。emacsを使用している場合は、etagsを使用してください。
私はdoxygenの使用をサポートしています。
このツールは、一連のhtmlページのようなjavadocを生成し、IDEで実行できるように、すべてのコードにインデックスを付け、その中を参照できるようにします(この関数はどこで使用され、どの関数で使用されますか...)。それを機能させるのは非常に簡単です。
私はかつて15年前のCプロジェクトのCコードの2000ファイルを維持しなければなりませんでした。doxygenでコードのインデックスを作成し、生成されたドキュメントを他の開発者に提供するのに1時間かかりました。(私は知っています、このフレーズは追加のように聞こえますが、それは本当です...それは本当に素晴らしいツールです)
すべてのCのような言語で動作する素晴らしいツール。
Doxygenは素晴らしいです。これまで関与したことのなかったいくつかのレガシー コード ベースに出くわす必要がありましたが、それは素晴らしいことでした (コード ベースは Doxygen 形式を使用して文書化されていませんでしたが)。
シンプルでどこにでもあるものを探しているなら、etagsを試してください。重量級のツールほど良くはありませんが、ほぼすべてのものに対応しており、emacs で動作します。vi には ctags を使用します。
Doxygen を選択し、EXTRACT_ALL を YES に設定します。それは単に強力で簡単です。気に入ったら、すべてのプラットフォームと言語で使い続けることができます。
どのIDEでも正常に動作します。NetbeansとEclipseはJavaベースですが、C /C++用のプラグインがあります
私はUnderstandforC++を使用しています。大量のコードを処理するのに非常に便利なツールです。また、コード統計を計算し、コールグラフを描画することもできます。持つ必要があります!
バックグラウンドでcscopeを使用するkscopeを使用していますが、関数リストなども提供しています。Linuxカーネルのような大規模なプロジェクトもうまく処理できるようです。kscopeの ホームページには、それが何をし、何をしないかについての簡潔な説明があります。
ID Utilsはとても便利だと思います。これは、即時の再帰的な grep のようなものです。それに付随するvimレシピがたくさんあります。
cスコープ。(他のスコープの投稿を改造したかったのですが、まだカルマがありません)。
- グローバル検索と置換
- 関数が呼び出されるすべての場所を見つける
- 関数によって呼び出されるすべての場所を見つける
- このファイルを含むファイルを検索します。
非常に簡単な使い方: $ cscope -R
vi がわからない場合は、EDITOR および VIEWER 環境変数を好みのエディターに変更してください。
cscope は常に私のお気に入りです。cbrowserもありますが、試していません。ctags もよく使われます。
言語に依存したソース コード検索エンジンは、SD Source Code Search Engineにあります。同時に多くの言語を処理できます。検索は、特定の言語のパターン、または言語全体のパターン (「TAX を含む識別子の検索」など) に対して実行できます。言語トークンに敏感になることで、誤検知の数が減り、ユーザーの時間を節約できます。C、C++、C#、COBOL、Java、ECMAScript、Java、XML、Verilog、VHDL、およびその他の多くの言語を理解します。
ここから Source-Navigator(TM) を使用します。それは非常に印象的で、大いに役立ちます。Tcl/Tk で書かれており、Windows 用の実行可能ファイルとして、また *nix 上ですぐにビルドできるソース コードとして利用できます。
私はdoxygenを使用して大きな成功を収めました。最良の結果を得るには (特に C++ のドキュメントを作成する場合)、graphviz をインストールし、doxygen 構成ファイルで有効にします。
これにより、依存関係マップとクラス図が自動的に生成され、残りの html ドキュメントにリンクされます。
開発者でなくても、Source Insightを利用できます
もしそうなら、それは持っている必要があります:)
IntelliJ は、Linux でのソース ブラウザーとして非常に優れています。ソース宣言と関数宣言の間をジャンプするための非常に優れたサポートがあります。C/C++ コードで試したことはありませんが、Ruby と Java でうまく動作します。
Anjuta IDE を使用しています。悪くない。Eclipse IDE と比較してどうかはわかりません。
私はフリー ソフトウェア ツールGNU globalを使用し、気に入っています。