正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

コードインテリジェンス

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

コードインテリジェンスは、インタラクティブな開発環境(IDE)に共通するコードナビゲーション機能を追加します。以下を含みます:

  • 型の署名とシンボルのドキュメント。
  • 定義へ移動。

コードインテリジェンスは、GitLabに組み込まれており、事前に計算されたコードインテリジェンスデータ用のファイル形式であるLSIF(Language Server Index Format)を利用しています。GitLabはプロジェクトごとに1つのLSIFファイルを処理し、コードインテリジェンスはブランチごとに異なるLSIFファイルをサポートしていません。

SCIPは、ソースコードのインデックス作成を行うツールの次世代版です。これを使用して、次のようなコードナビゲーション機能を強化できます:

  • 定義へ移動
  • 参照を検索

GitLabは、コードインテリジェンス用のSCIPをネイティブにサポートしていません。ただし、SCIPコマンドラインインターフェースを使用して、SCIPツールで生成されたインデックスをLSIF互換ファイルに変換できます。ネイティブSCIPサポートに関するディスカッションについては、issue 412981を参照してください。

今後のコードインテリジェンスの機能強化の進捗状況については、エピック4212を参照してください。

コードインテリジェンスの設定

前提要件:

お使いの言語がどのように最適にサポートされているかを確認するには、Sourcegraphが推奨するインデクサーを確認してください。

CI/CDコンポーネントを使用する

GitLabは、.gitlab-ci.ymlファイルでコードインテリジェンスを設定するためのCI/CDコンポーネントを提供します。このコンポーネントは、次の言語をサポートしています:

  • Go言語バージョン1.21以降。
  • TypeScriptまたはJavaScript。
  • Java 8、11、17、および21。
  • Python
  • .Net/C#

コンポーネントに言語をコントリビュートするには、コードインテリジェンスコンポーネントプロジェクトでマージリクエストを開いてください。

  1. GitLab CI/CDコンポーネントをプロジェクトの.gitlab-ci.ymlに追加します。たとえば、このジョブはgolangのLSIFアーティファクトを生成します:

    include:
      - component: ${CI_SERVER_FQDN}/components/code-intelligence/golang-code-intel@v0.0.3
        inputs:
          golang_version: ${GO_VERSION}
  2. コードインテリジェンスコンポーネントの設定手順については、サポートされている各言語のREADMEを確認してください。

  3. 詳細な設定については、コンポーネントの使用を参照してください。

コードインテリジェンスのCI/CDジョブを追加する

プロジェクトのコードインテリジェンスを有効にするには、GitLab CI/CDジョブをプロジェクトの.gitlab-ci.ymlに追加します。

  1. ジョブを.gitlab-ci.yml設定に追加します。このジョブは、SCIPインデックスを生成し、GitLabで使用するためにLSIFに変換します:

    "code_navigation":
       rules:
       - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # the job only needs to run against the default branch
       image: node:latest
       stage: test
       allow_failure: true # recommended
       script:
          - npm install -g @sourcegraph/scip-typescript
          - npm install
          - scip-typescript index
          - |
             env \
             TAG="v0.4.0" \
             OS="$(uname -s | tr '[:upper:]' '[:lower:]')" \
             ARCH="$(uname -m | sed -e 's/x86_64/amd64/')" \
             bash -c 'curl --location "https://github.com/sourcegraph/scip/releases/download/$TAG/scip-$OS-$ARCH.tar.gz"' \
             | tar xzf - scip
          - chmod +x scip
          - ./scip convert --from index.scip --to dump.lsif
       artifacts:
          reports:
             lsif: dump.lsif
  2. CI/CDの設定によっては、ジョブを手動で実行するか、既存のパイプラインの一部として実行されるまで待つ必要がある場合があります。

  1. インデックスを生成するには、ジョブ(code_navigation)を.gitlab-ci.yml設定に追加します:

    code_navigation:
       rules:
       - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # the job only needs to run against the default branch
      image: sourcegraph/lsif-go:v1
      allow_failure: true # recommended
      script:
        - lsif-go
      artifacts:
        reports:
          lsif: dump.lsif
  2. CI/CDの設定によっては、ジョブを手動で実行するか、既存のパイプラインの一部として実行されるまで待つ必要がある場合があります。

GitLabは、ci_max_artifact_size_lsifアーティファクトアプリケーションの制限により、コード生成ジョブによって生成されるアーティファクトを200 MBに制限します。GitLab Self-Managedインスタンスでは、インスタンス管理者はこの値を変更できます。

コードインテリジェンスの結果を表示する

ジョブが成功したら、リポジトリを参照してコードインテリジェンス情報を確認します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. 左側のサイドバーでコード > リポジトリを選択します。

  3. リポジトリ内のファイルに移動します。ファイル名がわかっている場合は、次のいずれかの操作を行います:

    • /~キーボードショートカットを入力してファイルファインダーを開き、ファイル名を入力します。
    • 右上にあるファイルを検索を選択します。
  4. コード行をポイントします。コードインテリジェンスからの情報が記載された行の項目には、その下に点線が表示されます:

    コードインテリジェンス

  5. 項目を選択して、詳細情報を確認します。

参照を検索

コードインテリジェンスを使用して、オブジェクトのすべての用途を表示します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. 左側のサイドバーでコード > リポジトリを選択します。

  3. リポジトリ内のファイルに移動します。ファイル名がわかっている場合は、次のいずれかの操作を行います:

    • /~キーボードショートカットを入力してファイルファインダーを開き、ファイル名を入力します。
    • 右上にあるファイルを検索を選択します。
  4. オブジェクトをポイントし、それを選択します。

  5. ダイアログで、次を選択します:

    • 定義: このオブジェクトの定義を表示します。
    • 参照: このオブジェクトを使用するファイルのリストを表示します。

    この変数は、このプロジェクトで2回参照されています。