2012-04-08 7 views
0

あなたが複数のファイル、ディレクトリ、サブディレクトリを持つ大きなプロジェクトに取り組んでいるとします。これらのディレクトリ/サブディレクトリ/ファイルのうちの1つでは、メソッドを定義しましたが、今度は、プロジェクト全体のどのファイルがメソッドを呼び出しているかを正確に知りたいと思います。これどうやってやるの?特定の文字列を含むすべてのファイルをどのように検索しますか?

+0

あなたはどの言語でプロジェクトを書いていますか? C++、java、..? – Rps

+1

ほとんどjava。どういうわけか "grep"を使ってこれを行う方法はありませんか? –

答えて

0

これを行う最も一般的な方法は、エディタを使用することです。たとえば、emagsは、etagsでタグインデックスを作成する場合にこれを行うことができます。

出典:http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/etags.html

あなただけの種類のM-。あなたが訪れたい機能の名前を入力すると、emacsがそこに連れて行きます。

どのシステムやエディタを使用しているのかわかりませんが、ほとんどのエディタはsimular関数を持っています。

emacsを使用しない場合は、機能を追跡し、他にも多くの優れた機能を得るための他の良い方法は、バージョンコントロールシステムを使用することです。 gitと同様に、これは本当に速い検索を提供します。

バージョン管理システムを使用していない場合は、検索専用に設計されたプログラムを参照することができます。 OpenGrokのように。

0

あなたはgrepに言及しましたので、私はこの解決策をそこに投げ捨てます。より堅牢なソリューションは、Fibbeが提案したバージョン管理システムを実装することです。

find . -exec grep 'method_name' {} \; -print 2> /dev/null

アイデアは、現在のディレクトリとサブディレクトリに発見されたファイルごとに、「METHOD_NAME」のgrepのは、そのファイル上で実行されています。 2> /dev/nullは、アクセス権のないすべてのディレクトリとファイルについて警告したくない場合に便利です。

関連する問題