代码智能
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
代码智能添加了交互式开发环境(IDE)中常见的代码导航功能,包括:
- 类型签名和符号文档。
- 跳转到定义。
代码智能已内置在 GitLab 中,并由 LSIF(语言服务器索引格式)提供支持,这是一种用于预计算代码智能数据的文件格式。GitLab 每个项目处理一个 LSIF 文件,代码智能不支持每个分支使用不同的 LSIF 文件。
SCIP 是用于索引源代码的工具的下一代演进。你可以用它来支持代码导航功能,例如:
- 跳转到定义
- 查找引用
GitLab 不原生支持 SCIP 用于代码智能。但是,你可以使用 SCIP CLI 将使用 SCIP 工具生成的索引转换为 LSIF 兼容文件。有关原生 SCIP 支持的讨论,请参阅 issue 412981。
有关即将推出的代码智能增强功能的进展,请参阅 epic 4212。
配置代码智能
先决条件:
要了解你的语言如何获得最佳支持,请查看 Sourcegraph 推荐的索引器。
使用 CI/CD 组件
GitLab 提供了一个 CI/CD 组件 来在你的 .gitlab-ci.yml 文件中配置代码智能。该组件支持以下语言:
- Go 1.21 或更高版本。
- TypeScript 或 JavaScript。
- Java 8、11、17 和 21。
- Python
- .Net/C#
要为该组件贡献更多语言,请在 代码智能组件项目 中打开合并请求。
-
向项目的
.gitlab-ci.yml添加 GitLab CI/CD 组件。例如,此作业为golang生成 LSIF 工件:include: - component: ${CI_SERVER_FQDN}/components/code-intelligence/[email protected] inputs: golang_version: ${GO_VERSION} -
有关 代码智能组件 的配置说明,请查看每种支持语言的
README。 -
有关更多配置详情,请参阅 使用组件。
为代码智能添加 CI/CD 作业
要为项目启用代码智能,请向项目的 .gitlab-ci.yml 添加 GitLab CI/CD 作业。
-
向你的
.gitlab-ci.yml配置添加一个作业。此作业生成 SCIP 索引并将其转换为 LSIF 以便在 GitLab 中使用:"code_navigation": rules: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # 该作业只需要在默认分支上运行 image: node:latest stage: test allow_failure: true # 推荐 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 -
根据你的 CI/CD 配置,你可能需要手动运行该作业,或者等待它作为现有流水线的一部分运行。
-
向你的
.gitlab-ci.yml配置添加一个作业(code_navigation)来生成索引:code_navigation: rules: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # 该作业只需要在默认分支上运行 image: sourcegraph/lsif-go:v1 allow_failure: true # 推荐 script: - lsif-go artifacts: reports: lsif: dump.lsif -
根据你的 CI/CD 配置,你可能需要手动运行该作业,或者等待它作为现有流水线的一部分运行。
GitLab 通过 (ci_max_artifact_size_lsif)
工件应用限制,将代码生成作业产生的工件限制为 200 MB。在 GitLab 自托管实例上,实例管理员可以更改此值。
查看代码智能结果
作业成功后,浏览你的仓库以查看代码智能信息:
-
在左侧边栏,选择 Search or go to 并找到你的项目。
-
选择 Code > Repository。
-
转到你的仓库中的文件。如果你知道文件名,可以:
- 输入
/~键盘快捷键打开文件查找器,然后输入文件名。 - 在右上角,选择 Find file。
- 输入
-
指向代码行。该行上有代码智能信息的项会在下方显示虚线:
-
选择该项目以了解更多信息。
查找引用
使用代码智能查看对象的所有使用情况: