Skip to main content

GitHub 上のコード間を移動する

GitHub で直接コードを移動することにより、リポジトリ内およびリポジトリ間の関係について理解できます。

GitHub のナビゲーションコードについて

コード ナビゲーションは、そのエンティティへの参照に対応する名前付きエンティティの定義と、エンティティの定義に対応する参照を表示しリンクすることで、コードの読み取り、ナビゲーション、理解に役立ちます。

"request" という関数が強調表示され、その下に関数に関する情報が表示されたポップアップ ウィンドウを含むコード ファイルを示すスクリーンショット。 ポップアップには、[定義] と [参照] の 2 つのタブがあります。

コード ナビゲーションでは、オープン ソースの tree-sitter ライブラリを使用します。 次の言語とナビゲーション戦略がサポートされています。

言語検索ベースのコード ナビゲーション正確なコード ナビゲーション
C#
CodeQL
Elixir
Go
Java
JavaScript
PHP
Python
Ruby
Rust
TypeScript

コード ナビゲーションを有効にするために、リポジトリで何かを構成する必要はありません。 サポートされているこれらの言語の検索ベースのナビゲーション情報と正確なコード ナビゲーション情報をすべてのリポジトリで自動的に抽出し、プログラミング言語が両方でサポートされている場合は、サポートされている 2 つのコード ナビゲーション アプローチを切り替えることができます。

GitHub では、オープン ソースの tree-sitterstack-graphs ライブラリに基づいて 2 つのコード ナビゲーション アプローチが開発されました。

  • 検索ベース - リポジトリ全体のすべての定義と参照を検索して、特定の名前のエンティティを見つける
  • 正確 - コード内の特定のポイントにあるクラス、関数、インポートされた定義のセットに基づいて定義と参照を解決する

これらのアプローチの詳細については、「正確なナビゲーションと検索ベースのナビゲーション」を参照してください。

将来のリリースでは、より正確な結果を得ることができるコード ナビゲーション アプローチである、_正確なコード ナビゲーション_が、より多くの言語について追加されます。

コード ファイル内は、キーボード ショートカットを使用して移動できます。 詳しくは、「キーボード ショートカット」をご覧ください。

シンボル ペインの使用

シンボル ペインを使用して、コード内の関数やクラスなどのシンボルをすばやく表示したり移動したりできるようになりました。 1 つのファイル、リポジトリ内のすべてのファイル、さらには GitHub 上のすべてのパブリック リポジトリのシンボルを検索できます。

シンボル検索は、コード検索の機能です。 詳しくは、「GitHub Code Search の構文について」を参照してください。

  1. リポジトリを選び、シンボルを含むファイルに移動します。

  2. シンボル ペインを表示するには、ファイルの内容の上にある をクリックします。

    または、ファイル内の対象シンボルをクリックしてシンボル ペインを開くこともできます。 クリック可能なシンボルは、マウスを合わせると黄色で強調表示されます。

  3. シンボル ペインまたはファイル自体から検索するシンボルをクリックします。

    • リポジトリ全体でシンボルを検索するには、シンボル ペインで [このリポジトリでこのシンボルを検索する] をクリックします。 GitHub のすべてのリポジトリでシンボルを検索するには、 [すべてのリポジトリ] をクリックします。
  4. シンボルへの参照間を移動するには、 または をクリックします。

  5. シンボルへの特定の参照に移動するには、 [このファイル内] の下にあるシンボル検索の結果をクリックします。

  6. 特定のシンボルの検索を終了するには、 [すべてのシンボル] をクリックします。

関数やメソッドの定義にジャンプする

ファイル内の関数またはメソッドの呼び出しをクリックすることで、同じリポジトリ内の関数またはメソッドの定義にジャンプできます。

関数ウィンドウのスクリーンショット。 [定義] というタイトルのセクションが、濃いオレンジ色の枠線で囲まれています。

関数とメソッドの全リファレンスを検索する

ファイル内の関数またはメソッドの呼び出しをクリックすることで、同じリポジトリ内にある関数またはメソッドのすべての参照を検索できます。

関数ウィンドウのスクリーンショット。 [3 個の参照] というタイトルのセクションが、濃いオレンジ色の枠線で囲まれています。

正確なナビゲーションと検索ベースのナビゲーション

GitHub でサポートされている一部の言語では、コード内の任意の時点で表示されるクラス、関数、インポートされた定義のセットに基づいて定義と参照を解決するアルゴリズム (オープン ソース stack-graphs ライブラリに基づく) を使用する_正確なコード ナビゲーション_にアクセスできます。 _検索ベースのコード ナビゲーション_を使用する言語もあります。この場合は、リポジトリ全体のすべての定義と参照を検索して、特定の名前のエンティティを見つけます。 どちらの方法も結果を見つけるのに効果的であり、どちらもコメントなどの不適切な結果を避けるようにしますが、特にリポジトリに同じ名前の複数のメソッドや関数が含まれている場合は、正確なコード ナビゲーションを使用すると、より正確な結果が得られます。

正確なコード ナビゲーション クエリで想定される結果が得られない場合は、表示されるポップオーバーの [検索ベース] リンクをクリックして、検索ベースのナビゲーションを実行できます。

関数ウィンドウのスクリーンショット。 [このリポジトリでこのシンボルを検索する] と [すべてのリポジトリ] という 2 つのリンクが濃いオレンジ色の枠線で囲まれています。

正確なコード ナビゲーションの結果が不正確と思われる場合は、サポート要求を提出できます。

リポジトリ間の正確なコード ナビゲーション

リポジトリ間のコード ナビゲーションは、正確なコード ナビゲーションと依存関係グラフによってサポートされている言語で使用できます。 詳しくは、「依存関係グラフについて」を参照してください。 リポジトリ間のコード ナビゲーションを使用すると、プロジェクトによってインポートされた依存関係で定義されている関数や変数の定義にジャンプできます (その依存関係が GitHub によってホストされるリポジトリである場合)。 現時点では、リポジトリ間のコード ナビゲーションでは、すべての参照を検索する要求はサポートされていません。

GitHub のコード ファイルのスクリーンショット。 行 "import o.s." で、モジュール名 "o.s." が強調表示され、[定義] モーダルに "cross-repo result" というタグが付いた結果が表示されています。

コード ナビゲーションのトラブルシューティング

コード ナビゲーションが有効になっているにもかかわらず、関数とメソッドの定義へのリンクが表示されない場合:

  • コード ナビゲーションは、アクティブなブランチに対してのみ機能します。 ブランチにプッシュして、もう一度やり直してください。
  • コード ナビゲーションが動作するのは、100,000 個未満のファイルをもつリポジトリのみです。

参考資料