14

OSS コードや他の人のコード (通常は C ベースですが、C++/Java の場合もあります) を変更する必要がある場合があり、コード フローに従ってシステムを理解しようとすると、型や関数宣言などのヘッダーを "grep" する必要があります。 . コードの閲覧を支援する優れたツールはありますか。型をクリックして宣言に移動したり、関数名をクリックしてその実装に移動したりできるようにしたいと思っています。私は Linux ボックスを使用しているため、「Visual Studio を使用するだけ」などの返信が必ずしもうまくいくとは限りません。ありがとう!

4

27 に答える 27

13

SourceInsightより優れたものはありません。

于 2008-09-16T00:31:42.143 に答える
10

Vimctagsおよびtaglistプラグインを使用しています。カーソルを変数名に移動すると、キーの組み合わせで変数の宣言に移動できます (また戻ります)。タグリストには、サイドバーにすべての関数、クラスなどの概要も表示されます。

于 2008-09-16T00:34:12.967 に答える
7

OpenGrokについて驚くべきことを聞いたことがあります。私の職場の別のチームがそれを使用していることを私は知っています。その Web サイトから:

OpenGrok は、高速で使いやすいソース コード検索および相互参照エンジンです。ソースツリーの検索、相互参照、ナビゲートに役立ちます。Mercurial、Git、SCCS、RCS、CVS、Subversion、Teamware、ClearCase、Perforce、Bazaar など、さまざまなプログラム ファイル形式とバージョン管理履歴を理解できます。言い換えれば、オープンソースを理解する (深く理解する) ことができるため、OpenGrok という名前が付けられました。Javaで書かれています。

于 2008-09-16T00:31:48.027 に答える
7

Doxygenは、ソース ブラウザーを含む Web ページのセットを生成できます。IDE ほど凝ったものではありませんが、必要なのは Web ブラウザだけです。

于 2008-09-16T00:42:09.110 に答える
5

Eclipse IDE は、Java に加えて C/C++ で動作することができます。IBM の Developer Works サイトに、C/C++ 開発用に Eclipse を構成する方法に関する記事があります。

編集:なぜこれが投票されたのですか?それは有効な答えです。C/C++ アドオンを備えた Eclipse により、質問の作成者はやりたいことを実行できます。提案したのは私だけではありませんが、他の人は投票されていません。では、なぜこれが否決されたのでしょうか。

于 2008-09-16T00:34:16.303 に答える
3

私はカーネル空間で少しやり、スコープに戻ってきます。

例えば:

$ 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で動作するように構成できると思います。

幸運を祈ります。

于 2008-09-16T00:55:53.647 に答える
2

VimCtagsは私にとってはうまくいきます。

于 2008-09-16T00:35:02.963 に答える
1

ctagsは非常に便利です。関係する2つのステップがあります。まず、すべてのソースでプログラムctagsを実行し、ディレクトリを含めます。これにより、ローカルディレクトリに「tags」という名前のファイルが作成されます。ctags * .c * .hは、すべてのソースが1つのディレクトリにある場合に問題ありません。複数のディレクトリでソースを操作する場合、複数の場所でctagsを実行する価値があります。次に、vi内で、任意の関数、定義されたタイプ、または変数にカーソルを合わせて、ctl-]を使用してそのエンティティの定義に移動します。emacsを使用している場合は、etagsを使用してください。

于 2008-09-16T03:22:09.287 に答える
1

私はdoxygenの使用をサポートしています。

このツールは、一連のhtmlページのようなjavadocを生成し、IDEで実行できるように、すべてのコードにインデックスを付け、その中を参照できるようにします(この関数はどこで使用され、どの関数で使用されますか...)。それを機能させるのは非常に簡単です。

私はかつて15年前のCプロジェクトのCコードの2000ファイルを維持しなければなりませんでした。doxygenでコードのインデックスを作成し、生成されたドキュメントを他の開発者に提供するのに1時間かかりました。(私は知っています、このフレーズは追加のように聞こえますが、それは本当です...それは本当に素晴らしいツールです)

すべてのCのような言語で動作する素晴らしいツール。

于 2008-09-16T07:38:29.653 に答える
1

Doxygenは素晴らしいです。これまで関与したことのなかったいくつかのレガシー コード ベースに出くわす必要がありましたが、それは素晴らしいことでした (コード ベースは Doxygen 形式を使用して文書化されていませんでしたが)。

于 2008-09-16T15:23:24.670 に答える
1

シンプルでどこにでもあるものを探しているなら、etagsを試してください。重量級のツールほど良くはありませんが、ほぼすべてのものに対応しており、emacs で動作します。vi には ctags を使用します。

于 2008-09-16T00:34:56.943 に答える
1

Doxygen を選択し、EXTRACT_ALL を YES に設定します。それは単に強力で簡単です。気に入ったら、すべてのプラットフォームと言語で使い続けることができます。

http://www.doxygen.org

于 2009-05-07T02:44:56.313 に答える
0

どのIDEでも正常に動作します。NetbeansとEclipseはJavaベースですが、C /C++用のプラグインがあります

于 2008-09-16T00:46:21.237 に答える
0

私はUnderstandforC++を使用しています。大量のコードを処理するのに非常に便利なツールです。また、コード統計を計算し、コールグラフを描画することもできます。持つ必要があります!

于 2008-09-16T07:48:11.767 に答える
0

バックグラウンドでcscopeを使用するkscopeを使用していますが、関数リストなども提供しています。Linuxカーネルのような大規模なプロジェクトもうまく処理できるようです。kscopeの ホームページには、それが何をし、何をしないかについての簡潔な説明があります。

于 2008-09-16T01:02:42.257 に答える
0

ID Utilsはとても便利だと思います。これは、即時の再帰的な grep のようなものです。それに付随するvimレシピがたくさんあります。

于 2009-04-01T00:09:30.683 に答える
0

cスコープ。(他のスコープの投稿を改造したかったのですが、まだカルマがありません)。

  • グローバル検索と置換
  • 関数が呼び出されるすべての場所を見つける
  • 関数によって呼び出されるすべての場所を見つける
  • このファイルを含むファイルを検索します。

非常に簡単な使い方: $ cscope -R

vi がわからない場合は、EDITOR および VIEWER 環境変数を好みのエディターに変更してください。

于 2008-09-17T00:38:24.477 に答える
0

cscope は常に私のお気に入りです。cbrowserもありますが、試していません。ctags もよく使われます。

于 2008-09-16T02:17:43.497 に答える
0

言語に依存したソース コード検索エンジンは、SD Source Code Search Engineにあります。同時に多くの言語を処理できます。検索は、特定の言語のパターン、または言語全体のパターン (「TAX を含む識別子の検索」など) に対して実行できます。言語トークンに敏感になることで、誤検知の数が減り、ユーザーの時間を節約できます。C、C++、C#、COBOL、Java、ECMAScript、Java、XML、Verilog、VHDL、およびその他の多くの言語を理解します。

于 2009-08-22T20:48:59.053 に答える
0

ここから Source-Navigator(TM) を使用します。それは非常に印象的で、大いに役立ちます。Tcl/Tk で書かれており、Windows 用の実行可能ファイルとして、また *nix 上ですぐにビルドできるソース コードとして利用できます。

于 2009-11-04T07:11:14.083 に答える
0

私はdoxygenを使用して大きな成功を収めました。最良の結果を得るには (特に C++ のドキュメントを作成する場合)、graphviz をインストールし、doxygen 構成ファイルで有効にします。

これにより、依存関係マップとクラス図が自動的に生成され、残りの html ドキュメントにリンクされます。

于 2008-09-16T10:22:05.360 に答える
0

開発者でなくても、Source Insightを利用できます

もしそうなら、それは持っている必要があります:)

于 2008-09-16T10:24:43.500 に答える
0

IntelliJ は、Linux でのソース ブラウザーとして非常に優れています。ソース宣言と関数宣言の間をジャンプするための非常に優れたサポートがあります。C/C++ コードで試したことはありませんが、Ruby と Java でうまく動作します。

于 2008-09-16T00:35:16.473 に答える
0

直接使用したことはありませんが、lxrで作成されたサイトを使用したことがあり、非常に便利だと思いました。関数とファイル名を相互参照するためのリンクを使用して、プロジェクトを行番号付きの相互参照 HTML ファイルに変換します。これで索引付けされたプロジェクト ソースの例がいくつかあります

2006 より新しいバージョンはないようですが、それでも機能する可能性があります。

于 2008-09-16T00:37:06.483 に答える
0

Anjuta IDE を使用しています。悪くない。Eclipse IDE と比較してどうかはわかりません。

于 2008-09-16T00:40:07.023 に答える
0

私はフリー ソフトウェア ツールGNU globalを使用し、気に入っています。

于 2009-05-07T17:16:21.520 に答える