Windows 上に C/C++ 以外の言語用の CScope スタイルのソース ブラウザはありますか?
-
09-06-2019 - |
質問
特に興味があるのは、Vim にプラグインして、Java や C# などの C/C++ 以外の言語で CScope スタイルのソース ブラウズ (関数定義、呼び出し元、グローバル シンボルなどを見つけるための 1 ~ 2 個のキーストローク コマンド) を可能にするツールです。 (Vim と Cscope はすでに C/C++ をブラウズするために非常によく統合されているため)。私は IDE ベースのツールには興味がありません。Microsoft や他のベンダーがすでにその領域に取り組んでいることを知っているからです。私は編集と参照には Vim を使用することを好みますが、C# や Java 用のツールを知りません。 CScopeと同等のパワー。
この質問に対する元の回答には、Vim と CScope の統合時に一部のユーザーが経験するバグを修正する CSWrapper アプリケーションへのポインタが含まれていました。ただし、私の Vim/CScope インストールは正常に動作します。Vim を使用して他の言語のコードを編集できるように機能を拡張しようとしているだけです。
解決
CScope は Java で動作します。
から http://cscope.sourceforge.net/cscope_vim_tutorial.html:
CSCOPEはもともとCコードでのみ使用することを目的としていましたが、実際にはC ++やJavaなどの言語でうまく機能する非常に柔軟なツールです。関数呼び出しや可変定義などの特定の追加構成要素を認識する機能を備えた、一般的な「Grep」データベースと考えることができます。デフォルトでは、CSCOPEは現在のディレクトリ(および-Rフラグを渡す場合、C、.h、.l、.y)のみを解析します(.c、.h、.l、.y)。ファイル拡張子のリスト(はい、それを変更する必要があります)。代わりに、解析したいファイルのリストを作成し、「cscope.files」と呼ぶ必要があります(「cscope -i foofile」を呼び出すと、必要なものを呼び出すことができます)。これを行う簡単な(そして非常に柔軟な)方法は、信頼できるUNIX「Find」コマンドを介してです。
find . -name '*.java' > cscope.files
次に、 'cscope -b'を実行してデータベースを再構築します(-bはCSCOPE GUIを起動せずにデータベースを構築するだけです)、Javaファイルのすべてのシンボルを閲覧できるようになります。どうやら、CSCOPEを使用して大量のドキュメントファイルを閲覧および編集している人がいるようです。これは、CSCOPEのパーサーの柔軟性を示しています。
他のヒント
Cscope が Java をサポートしていると主張するのは極端な言い過ぎです。メソッドを関数のように扱っているようで、A.foo()、A.foo(Object)、および B.foo() がすべて異なることを認識していません。これは、多くの同じ名前のメソッドを含む大規模なコード ベース (サードパーティ ライブラリを含む) にとって大きな問題です。(私は Cscope ソースを見ていませんが、これは Debian 不安定版の最新の Cscope バージョン 15.7a-3.3 を試して見つけたものです。)
大規模な Java プロジェクトで Cscope を試しましたが、この制限のためまったく役に立ちませんでした。大手 IDE 以外のフリー ソフトウェアを使用すると、「誰がこのメソッドを呼び出すのか」といった基本的な質問にすぐに答えられないのは残念ですが、受け入れたほうがよいでしょう。(間違っていたら幸いです。私はメソッドをコメントアウトして再コンパイルするなどのハックに頼っています。)
ここのパーティーには少し遅れましたが、 https://github.com/eapache/starscope/ プロジェクトは、より多くの言語の cscope データベースを生成するための優れたフレームワークを提供します。現在RubyとGoをサポートしており、JavaScriptも開発中です。Java/C# の追加はそれほど難しいことではありません。
編集:Javascript が完全にサポートされるようになりました。
私も Andrew の意見に同意します。メソッドの呼び出し階層を取得しようとすると、たとえ異なるクラスからのものであっても、同じ名前のすべての呼び出しが返されます。
Eclim を使用して Eclipse を VIM に接続できます
支持者が階層と呼ぶもの
あなたが探しているものは次のようなものかもしれません:
http://www.vim.org/scripts/script.php?script_id=1783
また、さまざまなフレーバーを使用して、独自の .vimrc ファイルで一部の CScope 機能を模倣することもできます。 地図.