コードインテリジェンス
- プラン: 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#
コンポーネントに言語をコントリビュートするには、コードインテリジェンスコンポーネントプロジェクトでマージリクエストを開いてください。
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}コードインテリジェンスコンポーネントの設定手順については、サポートされている各言語の
READMEを確認してください。詳細な設定については、コンポーネントの使用を参照してください。
コードインテリジェンスのCI/CDジョブを追加する
プロジェクトのコードインテリジェンスを有効にするには、GitLab CI/CDジョブをプロジェクトの.gitlab-ci.ymlに追加します。
ジョブを
.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.lsifCI/CDの設定によっては、ジョブを手動で実行するか、既存のパイプラインの一部として実行されるまで待つ必要がある場合があります。
インデックスを生成するには、ジョブ(
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.lsifCI/CDの設定によっては、ジョブを手動で実行するか、既存のパイプラインの一部として実行されるまで待つ必要がある場合があります。
GitLabは、(ci_max_artifact_size_lsif)アーティファクトアプリケーションの制限により、コード生成ジョブによって生成されるアーティファクトを200 MBに制限します。GitLab Self-Managedインスタンスでは、インスタンス管理者はこの値を変更できます。
コードインテリジェンスの結果を表示する
ジョブが成功したら、リポジトリを参照してコードインテリジェンス情報を確認します:
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
左側のサイドバーでコード > リポジトリを選択します。
リポジトリ内のファイルに移動します。ファイル名がわかっている場合は、次のいずれかの操作を行います:
/~キーボードショートカットを入力してファイルファインダーを開き、ファイル名を入力します。- 右上にあるファイルを検索を選択します。
コード行をポイントします。コードインテリジェンスからの情報が記載された行の項目には、その下に点線が表示されます:
項目を選択して、詳細情報を確認します。
参照を検索
コードインテリジェンスを使用して、オブジェクトのすべての用途を表示します:

