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

