Code Intelligence
Code Intelligence 添加了交互式开发环境 (IDE) 常见的代码导航功能,包括:
- 类型签名和符号文档。
- Go-to 定义。
Code Intelligence 内置于极狐GitLab 并由 LSIF(语言服务器索引格式)提供支持,这是一种用于预计算代码智能数据的文件格式。极狐GitLab 为每个项目处理一个 LSIF 文件,而且不支持每个分支上的不同 LSIF 文件。
SCIP 是索引源代码的下一代工具。您可以使用它来为代码导航功能提供支持,例如:
- 跳转至定义
- 查找引用
极狐GitLab 代码智能原生不支持 SCIP,你可以使用 SCIP CLI 将 SCIP 工具生成的索引转换为 LSIF 兼容文件。
配置
先决条件:
- 你可以检查一下以确保能够和你项目的语言兼容的索引器具:
- LSIF 索引器
- SCIP 索引器
使用 CI/CD 组件
极狐GitLab 提供一个 CI/CD 组件,用于在你的 .gitlab-ci.yml
文件中配置代码智能。该组件支持下列语言:
- Go 1.21 或以后版本。
- TypeScript 或 JavaScript。
- Java 8、11、17 和 21。
-
将极狐GitLab CI/CD 组件添加到您的
.gitlab-ci.yml
配置文件,例如:下面的作业会为golang
生成 LSIF 文件:- 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
中。
::Tabs
:::TabTitle 使用 SCIP 索引器
-
为你的
.gitlab-ci.yml
添加一个作业。这个作业生成 SCIP 索引,然后将它转换为 LSIF,以便在极狐GitLab 中使用:"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
-
取决于你的 CI/CD 配置,你可能需要手动运行作业,或者等待它作为现有流水线的一部分运行。
:::TabTitle 使用 LSIF 索引器
-
在你的
.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
-
取决于你的 CI/CD 配置,你可能需要手动运行作业,或者等待它作为现有流水线的一部分运行。
::EndTabs
ci_max_artifact_size_lsif
)的文件应用限制。在自主管理的安装中,管理员可以更改此值。查看代码智能结果
在作业成功后,浏览你的仓库以查看代码智能信息:
- 在左侧侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 代码 > 仓库。
- 去到你的仓库中的文件。如果你知道文件名,可以选择:
- 输入
/~
键盘快捷方式打开文件查找器,然后输入文件名。 - 在右上角选择 查找文件。
- 输入
-
将鼠标指向代码行。在那里有来自代码智能的信息的项目显示一个点线:
- 选择项目以了解有关它的更多信息。
查找引用
使用代码智能来查看对象的所有使用: