正確なコード検索

GitLab 15.9で導入され index_code_with_zoekt というフラグがインデックス作成に、search_code_with_zoekt というフラグが検索に使われます。どちらもデフォルトでは無効になっています。

caution
正確なコード検索機能については、現在もアクティビティで変更を行っています。GitLabはまずこれをドッグフード化し、GitLab.comでアクセスをリクエストした特定の顧客だけにロールアウトする予定です。GitLab.comの顧客が試用できるようになったらアナウンスします。Exact Code Search機能のロードマップを確認することで、開発者の進捗を追うことができます。セルフマネジメントのGitLabでは、この機能を有効にすることは技術的には可能ですが、GitLabは開発のステージではサポートやドキュメントを提供しておらず、大規模なテストも広く行われていません。また、多くの既知の制限があります。

使用方法

GitLabでコード検索を行う際、プロジェクトが有効なグループに属している場合、Zoektによる“正確なコード検索 “が選択されます。

Zoektとadvanced searchの主な違いは、Zoektが部分文字列の完全一致を提供することと、正規表現を検索できることです。正規表現での検索が可能なため、特定の特殊文字はエスケープする必要があります。バックスラッシュは特殊文字をエスケープし、二重引用符で囲むとフレーズ検索に使用できます。

構文

この表は、正確なコード検索のためのクエリの例を示しています。

クエリ説明
fooを含むファイルを返します。foo
"class foo"正確な文字列を含むファイルを返します。class foo
class foo classfoo
foo or bar foo またはbar
class Foo class (大文字小文字を区別しない) およびFoo (大文字小文字を区別する) を含むファイルを返します。
class Foo case:yes classFoo を含むファイルを返します(両方とも大文字と小文字を区別します)。
foo -bar foo を含み、以下を含まないファイルを返します。bar
foo file:jsを含む名前のファイルからfoo を検索します。js
foo -file:testを含まない名前のファイルでfoo を検索。test
foo lang:rubyRuby のソースコードからfoo を検索します。
foo f:\.js$で終わる名前のファイルからfoo を検索します。.js
foo.*bar正規表現にマッチする文字列を検索します。foo.*bar