正式なドキュメントは英語版であり、この日本語訳は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 CLIを使用して、SCIPツールで生成されたインデックスをLSIF互換ファイルに変換できます。ネイティブSCIPサポートに関するディスカッションについては、イシュー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.ymlにGitLab CI/CDコンポーネントを追加します。例えば、このジョブはGo用の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.ymlにGitLab CI/CDジョブを追加します。

  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. .gitlab-ci.yml設定にジョブ(code_navigation)を追加してインデックスを生成します:

    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回参照されています。