各画面の説明
トップページ
左のフィールドで検索対象ごとに検索キーを入力します。
右のコンボボックスで検索対象となるプロジェクトを指定します。
検索対象
検索対象は次の5つです。複数同時にキーを指定するとAND検索になります。
- Full Search
すべてのトークン(単語、文字列リテラル、識別子、数値)
シンボルに該当しない単語(キーワード、文字列、コメントなど)はここでしか検索できない - Definition
シンボル(クラス、関数、変数、マクロ等の名前)の定義 - Symbol
シンボルの定義と参照
Definitionと異なり、シンボルを使っている場所にもヒットする - File Path
ファイルやディレクトリ/フォルダの名前 - History
バージョン管理システムのコメント
OpenGrokはトークン単位で検索を行います。例えば、printはprintlnにヒットしません。これはファイルパスであっても同様で、fooは/foo/barにヒットしますが、/foobar/bazにはヒットしません。
トークンの一部分を検索するにはワイルドカードを使用します。
プロジェクト
プロジェクトは複数指定できます。ここでプロジェクト名をダブルクリックするとプロジェクト内のディレクトリを閲覧できます。
検索結果
ファイル名をクリックすると、ファイルの先頭へジャンプします。
右半分のヒットした行をクリックすると、その行へジャンプします。
ファイル名の左にあるショートカットリンクの意味は次の通りです。
- H: ファイルの履歴を表示します
- A: Annotate: 行ごとに最終更新者を表示します
- D: このファイルをダウンロードします
ファイルの閲覧
- Home: トップに戻ります
- History: ファイルの履歴を表示します
- Annotate: 行ごとに最終更新者を表示します
- Line#: 行番号の表示を切り替えます
- Navigate: ナビゲーションウィンドウの表示を切り替えます
- Download: このファイルをダウンロードします
ナビゲーションウインドウでは、ファイル内にあるシンボルの定義へジャンプすることができます。
- 行番号をクリックするとその行にジャンプします。このとき、アドレスバーからその行のURLが取得できます
- シンボルをクリックするとそのシンボルの定義か参照を検索します
履歴の閲覧
プロジェクトをバージョン管理システムからインポートしている場合は、履歴をOpenGrok上で確認することができます。
リビジョン番号をクリックするとその時点での内容を確認できます。また、Compareボタンで、ラジオボタンで選択した2つのリビジョン間の差分を確認できます。

Annotateでは行ごとの最終更新リビジョンと更新したユーザーを確認できます。

発展的な検索機能
この章はヘルプの翻訳です。
検索クエリはスペースで区切られた節の列です。節の前には+、-およびフィールド名を付けることができます。
-
+を付けると、「その節がヒットする」ファイルを探します(省略可) -
-を付けると、「その節がヒットしない」ファイルを探します - 以下の
フィールド名:を付けると、その節を検索するフィールドを限定します(画面上の表記と名前が違います)-
full:Full Search -
defs:Definition -
refs:Symbol -
path:File Path -
hist:History
-
Webフォームから検索する場合、入力するフィールドによってフィールド名のデフォルト値が決まります。
節は以下のものから成ります。
- 単語: その単語自体にヒットする
- 句: スペース区切りの単語列を" "で囲んだもの
- クエリーグループ: 検索クエリーを( )で囲んだもの
節には以下の論理演算が行えます。
-
ANDまたは&& -
ORまたは|| -
NOTまたは-
AND、OR、NOTはすべて大文字で、AND、ORは中置記法の2項演算子、NOTは前置記法の単項演算子です。
ワイルドカード
単語の検索にワイルドカードが使用できます。ただし、単語の先頭には使えません。
-
*任意の$n$文字 $(n \ge 0)$ を表す -
?任意の1文字を表す
例えば、print*はprint、println、printf等にヒットします。
ワイルドカードは単語を超えません。例えば、foo*arはfoobarにヒットしますが、foo barにはヒットしません。
例
setResourceMonitorsが定義されている場所を探す
defs:setResourceMonitors
usr/src/cmd/cmd-inet/usr.sbin/の下でsprintfを使っているファイルを探す
refs:sprintf path:usr/src/cmd/cmd-inet/usr.sbin
変数Asignへ代入している場所を探す
"Asign="
pstackをビルドするMakefileを探す
pstack path:Makefile
Bill Joyという句を探す
"Bill Joy"
/usr/bin/perlではなく/bin/perlを指定しているperlファイルを探す
-"/usr/bin/perl" +"/bin/perl"
fooから始まる語を探す
foo*
ファイル名に". c"を含むファイルを探す
path:". c"
Tips
モジュールを絞り込む
パッケージや名前空間を限定する機能はありませんが、File Pathフィールドにモジュールのディレクトリ名を指定することで疑似的にモジュール名での絞り込みができます。
オブジェクト(インスタンス)を作っている場所を探す
クラスKlassをインスタンス化している場所を探すには、Full Searchで次のように検索します。
(new クラス名でインスタンス化する言語の場合)
"new Klass"
ダブルクォートが無いとただのAND検索になり、Klass = func("new"); などにもヒットしてしまいます。
派生クラスを探す
"public Klass"
リンク
- OpenGrok
- OpenGrokの導入
- OpenGrokによるソースコード検索環境の構築
- OpenGrok設置例 http://src.illumos.org/source/
今回のスクリーンショットはこちらから取得しました。




