GitHub のナビゲーションコードについて
コード ナビゲーションは、そのエンティティへの参照に対応する名前付きエンティティの定義と、エンティティの定義に対応する参照を表示しリンクすることで、コードの読み取り、ナビゲーション、理解に役立ちます。
コード ナビゲーションでは、オープン ソースの tree-sitter
ライブラリを使用します。 次の言語とナビゲーション戦略がサポートされています。
言語 | 検索ベースのコード ナビゲーション | 正確なコード ナビゲーション |
---|---|---|
Bash | ||
C | ||
C# | ||
C++ | ||
CodeQL | ||
Elixir | ||
Go | ||
JSX | ||
Java | ||
JavaScript | ||
Lua | ||
PHP | ||
プロトコル バッファー | ||
Python | ||
R | ||
Ruby | ||
Rust | ||
Scala | ||
Starlark | ||
Swift | ||
TypeScript |
コード ナビゲーションを有効にするために、リポジトリで何かを構成する必要はありません。 サポートされているこれらの言語の検索ベースのナビゲーション情報と正確なコード ナビゲーション情報をすべてのリポジトリで自動的に抽出し、プログラミング言語が両方でサポートされている場合は、サポートされている 2 つのコード ナビゲーション アプローチを切り替えることができます。
GitHub では、オープン ソースの tree-sitter
と stack-graphs
ライブラリに基づいて 2 つのコード ナビゲーション アプローチが開発されました。
- 検索ベース - リポジトリ全体のすべての定義と参照を検索して、特定の名前のエンティティを見つける
- 正確 - コード内の特定のポイントにあるクラス、関数、インポートされた定義のセットに基づいて定義と参照を解決する
これらのアプローチの詳細については、「正確なナビゲーションと検索ベースのナビゲーション」を参照してください。
将来のリリースでは、より正確な結果を得ることができるコード ナビゲーション アプローチである、_正確なコード ナビゲーション_が、より多くの言語について追加されます。
コード ファイル内は、キーボード ショートカットを使用して移動できます。 詳しくは、「キーボード ショートカット」をご覧ください。
シンボル ペインの使用
シンボル ペインを使用して、コード内の関数やクラスなどのシンボルをすばやく表示したり移動したりできるようになりました。 1 つのファイル、リポジトリ内のすべてのファイル、さらには GitHub 上のすべてのパブリック リポジトリのシンボルを検索できます。
シンボル検索は、コード検索の機能です。 詳しくは、「GitHub Code Search の構文について」を参照してください。
-
リポジトリを選び、シンボルを含むファイルに移動します。
-
シンボル ペインを表示するには、ファイルの内容の上にある をクリックします。
または、ファイル内の対象シンボルをクリックしてシンボル ペインを開くこともできます。 クリック可能なシンボルは、マウスを合わせると黄色で強調表示されます。
-
シンボル ペインまたはファイル自体から検索するシンボルをクリックします。
- リポジトリ全体でシンボルを検索するには、シンボル ペインで [このリポジトリでこのシンボルを検索する] をクリックします。 GitHub のすべてのリポジトリでシンボルを検索するには、 [すべてのリポジトリ] をクリックします。
-
シンボルへの参照間を移動するには、 または をクリックします。
-
シンボルへの特定の参照に移動するには、 [このファイル内] の下にあるシンボル検索の結果をクリックします。
-
特定のシンボルの検索を終了するには、 [すべてのシンボル] をクリックします。
関数やメソッドの定義にジャンプする
ファイル内の関数またはメソッドの呼び出しをクリックすることで、同じリポジトリ内の関数またはメソッドの定義にジャンプできます。
関数とメソッドの全リファレンスを検索する
ファイル内の関数またはメソッドの呼び出しをクリックすることで、同じリポジトリ内にある関数またはメソッドのすべての参照を検索できます。
正確なナビゲーションと検索ベースのナビゲーション
GitHub でサポートされている一部の言語では、コード内の任意の時点で表示されるクラス、関数、インポートされた定義のセットに基づいて定義と参照を解決するアルゴリズム (オープン ソース stack-graphs
ライブラリに基づく) を使用する_正確なコード ナビゲーション_にアクセスできます。 _検索ベースのコード ナビゲーション_を使用する言語もあります。この場合は、リポジトリ全体のすべての定義と参照を検索して、特定の名前のエンティティを見つけます。 どちらの方法も結果を見つけるのに効果的であり、どちらもコメントなどの不適切な結果を避けるようにしますが、特にリポジトリに同じ名前の複数のメソッドや関数が含まれている場合は、正確なコード ナビゲーションを使用すると、より正確な結果が得られます。
正確なコード ナビゲーション クエリで想定される結果が得られない場合は、表示されるポップオーバーの [検索ベース] リンクをクリックして、検索ベースのナビゲーションを実行できます。
正確なコード ナビゲーションの結果が不正確と思われる場合は、サポート要求を提出できます。
リポジトリ間の正確なコード ナビゲーション
リポジトリ間のコード ナビゲーションは、正確なコード ナビゲーションと依存関係グラフによってサポートされている言語で使用できます。 詳しくは、「依存関係グラフについて」を参照してください。 リポジトリ間のコード ナビゲーションを使用すると、プロジェクトによってインポートされた依存関係で定義されている関数や変数の定義にジャンプできます (その依存関係が GitHub によってホストされるリポジトリである場合)。 現時点では、リポジトリ間のコード ナビゲーションでは、すべての参照を検索する要求はサポートされていません。
コード ナビゲーションのトラブルシューティング
コード ナビゲーションが有効になっているにもかかわらず、関数とメソッドの定義へのリンクが表示されない場合:
- コード ナビゲーションは、アクティブなブランチに対してのみ機能します。 ブランチにプッシュして、もう一度やり直してください。
- コード ナビゲーションが動作するのは、100,000 個未満のファイルをもつリポジトリのみです。