それぞれ約 1000 行のコードを含む 100 個のファイルで構成されるプロジェクト (ライブラリなど) があるとします。あなたは関数 awesome_foo(...) を見つけたいと思っています。正直なところ、grepするのは不気味で効果がないと思います...
編集:私は主に関数定義を探しています
grep -irnw "awesome_foo" *
必ず結果を出します。
パラメータは次のとおりです。
-i, --ignore-case
PATTERN ファイルと入力ファイルの両方で、大文字と小文字の区別を無視します。
-n, --行番号
出力の各行の前に、入力ファイル内の行番号を付けます。
-R, -r, --recursive
各ディレクトリの下にあるすべてのファイルを再帰的に読み取ります。これは -d recurse オプションと同等です。
-w, --word-正規表現
単語全体を形成する一致を含む行のみを選択します。テストは、一致する部分文字列が行の先頭にあるか、単語構成文字以外の文字が前になければならないことです。同様に、それは行末にあるか、単語以外の構成文字が後に続く必要があります。単語の構成文字は、文字、数字、およびアンダースコアです。
直接テキスト検索または正規表現のすべてのインスタンスを返すファイルツールで優れた検索機能を備えたnotepadd ++のようなものを使用できる場合。私はこれをよく使い、とても役に立ちます。
統合開発環境は、コードを解析し、Ctrl キーを押しながらクリックするか、キーボード ショートカットを使用して、各シンボルの宣言 (または使用箇所) に移動できるインデックスを生成します。これは、大規模なコードベースで人々がよく作業する方法です。
IDE を使用していない場合でも、いくつかのオプションがあります。
CTagsは、ソース ファイルを読み取り、プログラムのシンボル情報を含む "インデックス ファイル" を生成するインデクサーです。エディター (Vim など) に接続することも、人間が判読できるシンボル参照を生成することもできます。
これはctags -x
、サンプルプログラムの出力です:
DrawGLScene 37 lesson5.c void DrawGLScene()
InitGL 15 lesson5.c void InitGL(int Width, int Height) // We call this right after our OpenGL window is created.
ReSizeGLScene 24 lesson5.c void ReSizeGLScene(int Width, int Height)
keyPressed 62 lesson5.c void keyPressed(unsigned char key, int x, int y)
main 78 lesson5.c int main(int argc, char **argv)
「名前、行とファイル、署名」のように見え、手動でインデックスとして簡単に使用できます。
−×
タグファイルを生成する代わりに、人間が読める表形式の相互参照 (xref) ファイルを標準出力に出力します。出力に含まれる情報は次のとおりです。タグ名。タグの種類; タグを定義するファイルの行番号、ファイル名、およびソース行 (余分な空白を圧縮したもの)。タグ ファイルは書き込まれず、タグ ファイルの出力に影響するすべてのオプションは無視されます。この機能の適用例は、ソース ファイル (例: ctags -x --c-kinds=f ファイル) にあるすべての関数のリストを生成するか、ソース ファイル (例: ctags) にあるすべての外部から見えるグローバル変数のリストを生成します。 −x −−c−kinds=v −−file−scope=ファイルなし)。このオプションは、最初のファイル名の前に表示する必要があります。
ctags /etags プログラムは、Linux および cygwin 環境で役立ちます。これらには、vim や emacs などのエディターやその他のツールのバインディングがあります。関数を選択してから、宣言と実装の間を行ったり来たりすることができます。
別の可能性はastro grepです。これは、grep ステートメントを作成するための GUI を提供する Windows アプリケーションであり、「スティング」を取り除き、複雑な検索を作成するプロセスを非常にシンプルにします。
「機能: - 正規表現 (標準の Microsoft .Net 正規表現を使用: クイック リファレンス) - 同時実行の複数のファイル タイプ - 再帰的なディレクトリ検索 - 検索式の上下の行を選択する「コンテキスト」機能 - 最近使用したリスト検索パス - 多目的な印刷オプション - ダブルクリックして、選択したエディターでファイルを開く - 最近使用したファイル名と検索式を保存 - 単語全体のみに一致 - 構文の強調表示 - 無料でオープン ソース"
eclipse
IDEを使用します。ナビゲーターで関数を追跡できます。CodeInsight
も大丈夫です。プロジェクトを追加してコードを追跡するだけです。時間を節約できると信じてください。