14

Java や C# などの C/C++ 以外の言語で、Vim にプラグインして CScope スタイルのソース ブラウジング (関数定義、呼び出し元、グローバル シンボルなどを見つけるための 1-2 キーストローク コマンド) を可能にするツールに特に興味があります。 (Vim と Cscope は、C/C++ をブラウジングするために既に非常によく統合されているため)。私は、Microsoft や他のベンダーが既にその分野に取り組んでいることを知っているので、IDE ベースのツールには興味がありません。 CScopeと同じ能力。

この質問に対する最初の回答には、一部のユーザーが Vim と CScope の統合に経験したバグを明らかに修正する CSWrapper アプリケーションへのポインターが含まれていました。ただし、Vim/CScope のインストールは問題なく動作します。Vim を使用して他の言語のコードを編集できるように機能を拡張しようとしています。

4

5 に答える 5

7

Cscope が Java をサポートしていると主張するのは極端です。メソッドを関数のように扱っているようで、A.foo()、A.foo(Object)、B.foo() がすべて異なることを認識していません。これは、多くの同じ名前のメソッドを持つ大規模なコード ベース (サードパーティ ライブラリを含む) の大きな問題です。(Cscope のソースは見ていませんが、Debian 不安定版の最新の Cscope、バージョン 15.7a-3.3 を試してみたところ、これが見つかりました。)

大規模な Java プロジェクトで Cscope を試しましたが、この制限のためにまったく役に立ちませんでした。大規模な IDE 以外のフリー ソフトウェアを使用して、「誰がこのメソッドを呼び出しているのか」などの基本的な質問に対する迅速な回答を得ることができないのは悲しいことですが、それを受け入れることもできます。(私が間違っていたら、それが大好きです。メソッドをコメントアウトして再コンパイルするなどのハックに頼っています。)

于 2011-08-25T22:09:07.753 に答える
4

CScope は Java で機能します。

http://cscope.sourceforge.net/cscope_vim_tutorial.htmlから:

Cscope はもともと C コードでの使用のみを目的としていましたが、実際には C++ や Java などの言語でうまく機能する非常に柔軟なツールです。関数呼び出しや変数定義などの特定の追加構造を認識する機能を備えた、汎用の「grep」データベースと考えることができます。デフォルトでは、Cscope は現在のディレクトリ (および -R フラグを渡した場合はサブディレクトリ) 内の C、lex、および yacc ファイル (.c、.h、.l、.y) のみを解析し、現在それを変更する方法はありません。ファイル拡張子のリスト (はい、変更する必要があります)。その代わりに、解析したいファイルのリストを作成し、それを 'cscope.files' と呼ぶ必要があります ('cscope -i foofile' を呼び出すと、任意の名前を付けることができます)。これを行う簡単な (そして非常に柔軟な) 方法は、信頼できる Unix の 'find' を使用することです。

find . -name '*.java' > cscope.files

'cscope -b' を実行してデータベースを再構築すると (-b は、Cscope GUI を起動せずにデータベースを構築するだけです)、Java ファイル内のすべてのシンボルを参照できるようになります。どうやら Cscope を使用して大量のドキュメント ファイルを参照および編集している人がいるようです。これは、Cscope のパーサーがいかに柔軟であるかを示しています。

于 2008-10-02T22:17:04.630 に答える
-1

これはあなたが探しているものかもしれません:

http://www.vim.org/scripts/script.php?script_id=1783

マップのさまざまなフレーバーを使用して、独自の.vimrcファイルで一部のCScope機能を模倣することもできます。

于 2008-09-15T18:42:37.193 に答える