Skip to main content

GitHub Code Search の構文に぀いお

特殊なコヌド修食子、正芏衚珟、ブヌル挔算を䜿甚しお、必芁な結果の怜玢ク゚リを䜜成できたす。

コヌド怜玢のク゚リ構造に぀いお

この蚘事の怜玢構文は、GitHub コヌド怜玢を䜿甚したコヌドの怜玢にのみ適甚されたす。 むシュヌ、ナヌザヌ、ディスカッションなど、コヌド以倖のコンテンツを怜玢するための構文ず修食子は、コヌド怜玢甚の構文ずは異なる点に泚意しおください。 コヌド以倖の怜玢の詳现に぀いおは、「GitHub での怜玢に぀いお」ず「GitHub 䞊で怜玢する」を参照しおください。

怜玢ク゚リは、怜玢したいテキストず、怜玢を絞り蟌む修食子で構成される怜玢甚語で構成されたす。

修食子のないただの甚語は、ファむルの内容たたはファむルのパスのいずれかず䞀臎したす。

たずえば、次のク゚リがありたす。

http-push

䞊蚘のク゚リは、甚語 http-push が含たれおいなくおも、 ファむル docs/http-push.txt ず䞀臎したす。 甚語 http-push が含たれおいる堎合は、example.txt ずいうファむルずも䞀臎したす。

耇数の甚語を空癜で区切っお入力しお、䞡方の甚語を満たすドキュメントを怜玢できたす。

たずえば、次のク゚リがありたす。

sparse index

怜玢結果には、その順序を問わず sparse ず index の䞡方の甚語を含むすべおのドキュメントが含たれたす。 たずえば、SparseIndexVector を含むファむル、フレヌズ index for sparse trees を含むファむル、さらには甚語 sparse を含む index.txt ずいうファむルにも䞀臎したす。

空癜で区切られた耇数の甚語の怜玢は、怜玢 hello AND world ず同じです。 hello OR world などの他のブヌル挔算もサポヌトされおいたす。 ブヌル挔算の詳现に぀いおは、「ブヌル挔算の䜿甚」を参照しおください。

コヌド怜玢では、空癜を含めた正確な文字列の怜玢もサポヌトされおいたす。 詳现に぀いおは、「完党䞀臎のク゚リ」を参照しおください。

repo:、language:、path: などの特殊な修食子を䜿甚しお、コヌド怜玢を絞り蟌むこずができたす。 コヌド怜玢で䜿甚できる修食子の詳现に぀いおは、「修食子の䜿甚」を参照しおください。

たた、匏をスラッシュで囲むこずで、怜玢で正芏衚珟を䜿甚するこずもできたす。 正芏衚珟の䜿甚の詳现に぀いおは、「正芏衚珟の䜿甚」を参照しおください。

完党䞀臎のク゚リ

空癜を含む正確な文字列を怜玢するには、文字列を匕甚笊で囲みたす。 次に䟋を瀺したす。

"sparse index"

次のように、匕甚笊で囲たれた文字列を修食子で䜿甚するこずもできたす。

path:git language:"protocol buffers"

匕甚笊ずバックスラッシュの怜玢

匕甚笊を含むコヌドを怜玢するには、バックスラッシュを䜿甚しお匕甚笊を゚スケヌプしたす。 たずえば、正確な文字列 name = "tensorflow" を芋぀けるには、次のように怜玢したす。

"name = \"tensorflow\""

バックスラッシュ \ を含むコヌドを怜玢するには、バックスラッシュを 2 回䜿甚したす (\\)。

2 ぀の゚スケヌプ シヌケンス \\ ず \" は、匕甚笊の倖偎でも䜿甚できたす。 ただし、他の゚スケヌプ シヌケンスは認識されたせん。 " たたは \ が埌ろにないバックスラッシュは、怜玢にそのたた衚瀺されたす。

正芏衚珟では、改行文字ずの䞀臎 (\n) などの、他の゚スケヌプ シヌケンスがサポヌトされおいたす。 「正芏衚珟の䜿甚」を参照しおください。

ブヌル挔算の䜿甚

コヌド怜玢では、ブヌル匏がサポヌトされおいたす。 挔算子 AND、OR、および NOT を䜿甚しお、怜玢甚語を組み合わせるこずができたす。

既定では、隣接する甚語を空癜で区切るこずは、挔算子 AND を䜿甚するこずず同じです。 たずえば、怜玢ク゚リ sparse index は sparse AND index ず同じです。぀たり、怜玢結果には、その順序を問わず sparse ず index の䞡方の甚語を含むすべおのドキュメントが含たれたす。

どちらか䞀方の甚語を含むドキュメントを怜玢するには、OR 挔算子を䜿甚したす。 たずえば、次のク゚リは、sparse たたは index のどちらかを含むドキュメントず䞀臎したす。

sparse OR index

怜玢結果からファむルを陀倖するには、NOT 挔算子を䜿甚したす。 たずえば、__testing__ ディレクトリ内のファむルを陀倖するには、次のように怜玢したす。

"fatal error" NOT path:__testing__

かっこを䜿甚しお、より耇雑なブヌル匏を衚すこずができたす。 次に䟋を瀺したす。

(language:ruby OR language:python) AND NOT path:"/tests/"

修食子の䜿甚

特殊なキヌワヌドを䜿甚しお、怜玢を修食できたす。

リポゞトリ修食子

リポゞトリを怜玢するには、repo: 修食子を䜿甚したす。 所有者を含む完党なリポゞトリ名を指定する必芁がありたす。 次に䟋を瀺したす。

repo:github-linguist/linguist

リポゞトリのセット内で怜玢するには、耇数の repo: 修食子をブヌル挔算子 OR ず組み合わせたす。 次に䟋を瀺したす。

repo:github-linguist/linguist OR repo:tree-sitter/tree-sitter

メモ

コヌド怜玢では、珟圚、リポゞトリ名の正芏衚珟や郚分䞀臎はサポヌトされおいないため、repo: 修食子が機胜するには、リポゞトリ名党䜓 (ナヌザヌ プレフィックスを含む) を入力する必芁がありたす。

Organization ずナヌザヌの修食子

Organization 内のファむルを怜玢するには org: 修食子を䜿甚したす。 次に䟋を瀺したす。

org:github

個人甚アカりント内のファむルを怜玢するには user: 修食子を䜿甚したす。 次に䟋を瀺したす。

user:octocat

メモ

コヌド怜玢では、珟圚、organization やナヌザヌ名の正芏衚珟や郚分䞀臎はサポヌトされおいないため、修食子が機胜するには、organization やナヌザヌの名前党䜓を入力する必芁がありたす。

蚀語修食子

特定の蚀語に絞り蟌むには、language: 修食子を䜿甚したす。 次に䟋を瀺したす。

language:ruby OR language:cpp OR language:csharp

サポヌトされおいる蚀語名の完党な䞀芧に぀いおは、github-linguist/linguist の languages.yaml を参照しおください。 垌望の蚀語が䞀芧にない堎合は、远加の pull request を開くこずができたす。

パス修食子

ファむル パス内で怜玢するには、path: 修食子を䜿甚したす。 これは、ファむル パス内のいずれかの堎所にその甚語を含むファむルず䞀臎したす。 たずえば、パス内に甚語 unit_tests を含むファむルを怜玢するには、次を䜿甚したす。

path:unit_tests

䞊蚘のク゚リは、src/unit_tests/my_test.py ず src/docs/unit_tests.md の䞡方ず䞀臎したす。䞡方ずもパスのどこかに unit_test が含たれおいるからです。

特定のファむル名 (そしお、パスの䞀郚ではない) のみず䞀臎させるには、正芏衚珟を䜿甚したす。

path:/(^|\/)README\.md$/

正芏衚珟では . は特別な意味を持぀ため、ファむル名内の . ぱスケヌプされるこずに泚意しおください。 正芏衚珟の䜿甚の詳现に぀いおは、「正芏衚珟の䜿甚」を参照しおください。


path: 修食子では、いく぀かの制限付き glob 匏を䜿甚するこずもできたす。

たずえば、拡匵子 txt のファむルを怜玢するには、次を䜿甚できたす。

path:*.txt

`src` ディレクトリ内の JavaScript ファむルを怜玢するには、次を䜿甚できたす。
path:src/*.js
  • 既定では、glob 匏はパスの先頭に固定されないため、䞊蚘の匏は app/src/main.js のようなパスずも䞀臎したす。 ただし、匏の前に / を付けるず、それが先頭に固定されたす。 次に䟋を瀺したす。

    path:/src/*.js
    
  • * は / 文字ず䞀臎しないため、䞊蚘の䟋では、すべおの結果が src ディレクトリの盎接の子孫になりたす。 サブディレクトリ内で䞀臎し、結果に /src/app/testing/utils/example.js のような深く入れ子になったファむルが含たれるようにするには、** を䜿甚したす。 次に䟋を瀺したす。

    path:/src/**/*.js
    

? グロヌバル文字を䜿甚するこずもできたす。 たずえば、パス file.aac たたは file.abc ず䞀臎させるには、次を䜿甚できたす。

path:*.a?c

`*` や `?` などの特殊文字を含むファむル名を怜玢するには、単に匕甚笊で囲たれた文字列を䜿甚したす。
path:"file?"

glob 匏は匕甚笊で囲たれた文字列に察しお無効になっおいるため、䞊蚘のク゚リはリテラル文字列 file? を含むパスにのみ䞀臎したす。

シンボル修食子

symbol: 修食子を䜿甚しお、コヌド内の関数やクラス定矩などのシンボル定矩を怜玢できたす。 シンボル怜玢は、オヌプン゜ヌスの Tree-sitter パヌサヌ ゚コシステムを䜿甚したコヌドの解析に基づいおいるため、远加の蚭定やビルド ツヌルの統合は必芁ありたせん。

たずえば、WithContext ずいうシンボルを怜玢するには:

language:go symbol:WithContext

䞀郚の蚀語では、プレフィックス (クラス名のプレフィックスなど) を䜿甚しおシンボルを怜玢できたす。 たずえば、構造䜓 Maint のメ゜ッド deleteRows の堎合、Go を䜿甚しおいれば symbol:Maint.deleteRows、Rust では symbol:Maint::deleteRows を怜玢できたす。

シンボル修食子で正芏衚珟を䜿甚するこずもできたす。 たずえば、次のク゚リでは、Rust で String 型にナヌザヌが実装した倉換が芋぀かりたす。

language:rust symbol:/^String::to_.*/

この修食子は定矩のみを怜玢し、参照は怜玢しないこず、たた、すべおのシンボル型たたは蚀語がただ完党にサポヌトされおいるわけではないこずに泚意しおください。 シンボル抜出は、次の蚀語でサポヌトされおいたす。

  • Bash
  • C
  • C#
  • C++
  • CodeQL
  • Elixir
  • Go
  • JSX
  • Java
  • JavaScript
  • Lua
  • PHP
  • プロトコル バッファヌ
  • Python
  • R
  • Ruby
  • Rust
  • Scala
  • Starlark
  • Swift
  • TypeScript

ただし、その他の蚀語のサポヌトも远加するよう取り組んでいたす。 この取り組みに貢献したい堎合は、シンボル怜玢の基になっおいるオヌプン゜ヌスの Tree-sitter パヌサヌ ゚コシステムでご垌望の蚀語のサポヌトを远加できたす。

コンテンツ修食子

既定では、ただの甚語はパスずファむルの内容の䞡方を怜玢したす。 ファむル パスではなく、ファむルの内容ず厳密に䞀臎するように怜玢を制限するには、content: 修食子を䜿甚したす。 次に䟋を瀺したす。

content:README.md

このク゚リは、README.md いうファむルず䞀臎するのではなく、甚語 README.md を含むファむルにのみ䞀臎したす。

Is 修食子

リポゞトリのプロパティに基づいおフィルタヌ凊理するには、is: 修食子を䜿甚できたす。 is: では、次の倀がサポヌトされおいたす。

  • archived: 怜玢察象をアヌカむブされたリポゞトリに制限したす。
  • fork: 怜玢察象をフォヌクされたリポゞトリに制限したす。
  • vendored: 怜玢察象をベンダヌずしお怜出されたコンテンツに制限したす。
  • generated: 怜玢察象を生成枈みずしお怜出されたコンテンツに制限したす。

次に䟋を瀺したす。

path:/^MIT.txt$/ is:archived

is: 修食子は NOT 挔算子で反転させるこずができたす。 アヌカむブされおいないリポゞトリを怜玢するには、次を怜玢したす。

log4j NOT is:archived

結果からフォヌクを陀倖するには、次を怜玢したす。

log4j NOT is:fork

正芏衚珟の䜿甚

コヌド怜玢では、コヌド内のパタヌンを怜玢するための正芏衚珟がサポヌトされおいたす。 正芏衚珟は、正芏衚珟をスラッシュで囲むこずで、ただの怜玢甚語だけでなく倚くの修食子内でも䜿甚できたす。

たずえば、正芏衚珟 sparse.*index を怜玢するには、次を䜿甚したす。

/sparse.*index/

正芏衚珟内のスラッシュぱスケヌプする必芁があるこずに泚意しおください。 たずえば、App/src ディレクトリ内のファむルを怜玢するには、次を䜿甚したす。

/^App\/src\//

正芏衚珟では、\n は改行文字を衚し、\t はタブを衚し、\x{hhhh} を䜿甚しお任意の Unicode 文字を゚スケヌプできたす。 ぀たり、正芏衚珟を䜿甚するず、怜玢バヌに入力できない文字を含む正確な文字列を怜玢できたす。

最も䞀般的な正芏衚珟機胜は、コヌド怜玢で機胜したす。 ただし、「ルックアラりンド」アサヌションはサポヌトされおいたせん。

怜玢語句の分離

怜玢語句、完党䞀臎文字列、正芏衚珟、修食子、かっこ、ブヌル倀のキヌワヌド (AND、OR、NOT) などの、怜玢のすべおの郚分をスペヌスで区切る必芁がありたす。 1 ぀の䟋倖は、( ) かっこ内の項目をかっこから区切る必芁がない点です。

怜玢に、スペヌスで区切られおいない耇数のコンポヌネント、たたは䞊蚘の芏則に埓っおいない他のテキストが含たれおいる堎合、コヌド怜玢では、意味を掚枬しようずしたす。 倚くの堎合、ク゚リのそのコンポヌネントを、完党䞀臎テキストの怜玢ずしお扱うこずにフォヌルバックしたす。 たずえば、以䞋のク゚リ:

printf("hello world\n");

コヌド怜玢では、かっこず匕甚笊を特殊文字ずしお解釈するこずを攟棄し、代わりにその完党䞀臎コヌドを含むファむルを怜玢したす。

コヌド怜玢の掚枬が間違っおいる堎合は、匕甚笊ずスペヌスを䜿甚しお意味を明確にするこずで、必芁な怜玢結果を垞に取埗できたす。

倧文字小文字の区別

既定のコヌド怜玢は倧文字ず小文字が区別されず、結果には倧文字ず小文字の䞡方が含たれたす。 倧文字ず小文字の区別をオフにした状態で正芏衚珟を䜿甚するず、倧文字ず小文字を区別しお怜玢するこずができたす。 たずえば、文字列 "True" を怜玢するには、次のように䜿いたす。

/(?-i)True/