2008-09-15 5 views
14

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

この質問へのオリジナルの答えは明らかに一部のユーザーがVimのとcscopeの統合体験バグを修正しCSWrapperアプリケーションへのポインタが含まれていました。しかし、私のVim/CScopeのインストールは正常に動作します。私はVimを使って他の言語のコードを編集できるように機能を拡張しようとしています。

+0

pythonの場合:http://stackoverflow.com/questions/3718868/using-cscope-to-browse-python-code-with-vim – idbrii

答えて

3

CScopeはJavaで動作します。 http://cscope.sourceforge.net/cscope_vim_tutorial.htmlから

Cscopeのは、もともとCコードのみで使用するために意図されていたが、実際にC++ やJavaのような言語でうまく動作非常に柔軟なツール です。 関数コール と変数定義のような特定の追加の構文を認識することができる汎用の「grep」データベースと考えることができます。デフォルトでは、CscopeはカレントディレクトリのC、lex、 yaccファイル(.c、.h、.l、.y)のみを解析します(-Rフラグを渡すとサブディレクトリは となります)、現在は方法はありません そのファイル拡張子のリストを変更する(はい、それを変更する必要があります)。 はので、代わりに、あなたは(あなたが「cscopeの-i foofile」を呼び出した場合、あなたが欲しいもの それを呼び出すことができます)あなたは 解析するファイルのリストを作成し、「cscope.files」それを呼び出す必要があります。

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

今すぐデータベースを(-bだけでビルドを再構築する「にcscope -b」を実行します。これを行う に簡単に(と非常に柔軟な)方法は、信頼できるUnixの「検索」コマンドであります データベースをCscope GUIを起動せずに)実行すると、 はJavaファイルのすべてのシンボルを参照できます。どうやら、Cscopeを使って大量の 文書ファイルを閲覧したり編集したりして、Cscopeのパーサーがどのようにフレキシブルであるかを示す人がいるようです。

5

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

大規模なJavaプロジェクトでCscopeを試しましたが、この制限のために私にとってすべて役に立ちました。大きなIDEの外にあるフリーソフトウェアを使って "誰がこのメソッドを呼び出すか"といった基本的な質問に素早く答えられるわけではないことは悲しいことですが、それを受け入れることもできます。 (私が間違っていると大好きです。メソッドをコメントアウトして再コンパイルするようなハックに頼ります。)

0

私はAndrewに同意します。メソッドの呼び出し階層を取得しようとすると、たとえ彼らが別のクラスの人であっても。

あなたはVIMにEclipseをプラグインするEclimを使用することができます呼び出し階層

http://eclim.org/vim/java/inspection.html#call-hierarchy

3

をsupportrs

http://eclim.org/

後半、ここでパーティにビットが、私のhttps://github.com/eapache/starscope/プロジェクトは素敵を提供より多くの言語のcscopeデータベースを生成するフレームワーク。現在、RubyとGoをサポートしており、Javascriptが進行中です。 Java/C#を追加するのは難しいことではありません。

編集:Javascriptが完全サポートされました。

+0

ありがとうございます! –