代码仓库 X-Ray
- Tier: Premium, Ultimate
- Add-on: GitLab Duo Pro or Enterprise
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
代码仓库 X-Ray 自动增强:
- 通过提供项目依赖关系的额外上下文,改进代码建议的准确性和相关性,从而增强 GitLab Duo Code Suggestions 的代码生成请求。
- 重构代码、修复代码 和 编写测试 的请求。
为此,代码仓库 X-Ray 通过以下方式让代码助手更深入地了解项目的代码库和依赖关系:
- 搜索依赖管理器配置文件(例如
Gemfile.lock、package.json、go.mod)。 - 从其内容中提取库列表。
- 将提取的列表作为额外上下文提供给 GitLab Duo Code Suggestions,用于代码生成、重构代码、修复代码和编写测试请求。
通过了解项目中使用的库和其他依赖关系,代码仓库 X-Ray 帮助代码助手使建议与项目使用的编码模式、风格和技术相匹配。这些建议能够更无缝地集成,并遵循给定堆栈的最佳实践。
代码仓库 X-Ray 仅增强代码生成请求,而不增强代码补全请求。
代码仓库 X-Ray 如何工作
当您将新提交推送到项目的默认分支时,代码仓库 X-Ray 会触发一个后台作业。 该作业会扫描并解析您仓库中的适用配置文件。
通常,每个项目一次只运行一个扫描作业。如果在扫描进行中触发了第二次扫描,则第二次扫描会等待第一次扫描完成后才执行。 这可能导致在最新配置文件数据被解析并更新到数据库之前出现短暂延迟。
当发出代码生成请求时,解析数据中的最多 300 个库会作为额外上下文包含在提示中。
启用代码仓库 X-Ray
如果您的项目有权访问 GitLab Duo Code Suggestions,则代码仓库 X-Ray 服务会自动启用。
支持的语言和依赖管理器
代码仓库 X-Ray 从仓库根目录最多搜索两个目录级别。例如,它支持 Gemfile.lock、api/Gemfile.lock 或 api/client/Gemfile.lock,但不支持 api/v1/client/Gemfile.lock。对于每种语言,只处理第一个匹配的依赖管理器。如果存在锁定文件,则优先于其非锁定文件对应项。
| Language | Dependency manager | Configuration file | GitLab version |
|---|---|---|---|
| C/C++ | Conan | conanfile.py |
17.5 or later |
| C/C++ | Conan | conanfile.txt |
17.5 or later |
| C/C++ | vcpkg | vcpkg.json |
17.5 or later |
| C# | NuGet | *.csproj |
17.5 or later |
| Go | Go Modules | go.mod |
17.4 or later |
| Java | Gradle | build.gradle |
17.4 or later |
| Java | Maven | pom.xml |
17.4 or later |
| JavaScript | NPM | package-lock.json, package.json |
17.5 or later |
| Kotlin | Gradle | build.gradle.kts |
17.5 or later |
| PHP | Composer | composer.lock, composer.json |
17.5 or later |
| Python | Conda | environment.yml |
17.5 or later |
| Python | Pip | *requirements*.txt 1 |
17.5 or later |
| Python | Poetry | poetry.lock, pyproject.toml |
17.5 or later |
| Ruby | RubyGems | Gemfile.lock |
17.4 or later |
Footnotes:
- 对于 Python Pip,所有匹配
*requirements*.txtglob 模式的配置文件都会被处理。
在您的 CI 管道中启用代码仓库 X-Ray(已弃用)
此功能已在 GitLab 17.6 中弃用,并计划在 18.0 中移除。请改用启用代码仓库 X-Ray。
前置条件:
- 您必须在项目中拥有 GitLab Duo Code Suggestions 的访问权限。
- 必须为项目设置并启用 GitLab Runner,因为代码仓库 X-Ray 使用 GitLab Runner 运行分析管道。
要启用代码仓库 X-Ray,请将以下定义作业添加到项目的 .gitlab-ci.yml 中。
xray:
stage: build
image: registry.gitlab.com/gitlab-org/code-creation/repository-x-ray:latest
allow_failure: true
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
variables:
OUTPUT_DIR: reports
script:
- x-ray-scan -p "$CI_PROJECT_DIR" -o "$OUTPUT_DIR"
artifacts:
reports:
repository_xray: "$OUTPUT_DIR/*/*.json"$OUTPUT_DIR环境变量定义了:- 报告的输出目录。
- 工件上传的路径。
- 添加的规则将作业限制为仅默认分支。以这种方式限制作业可确保开发更改不会影响用于生产代码建议的基准 X-Ray 数据。
初始 x-ray 作业完成并上传仓库分析报告后,无需进一步操作。从那时起,代码仓库 X-Ray 会自动增强所有代码生成请求。
每次运行包含 xray 作业的 CI/CD 管道时,您项目的 X-Ray 数据都会更新。要了解有关管道配置和触发器的更多信息,请参阅管道文档。
支持的语言和包管理器
| Language | Package Manager | Configuration File |
|---|---|---|
| Go | Go Modules | go.mod |
| JavaScript | NPM, Yarn | package.json |
| Ruby | RubyGems | Gemfile.lock |
| Python | Poetry | pyproject.toml |
| Python | Pip | requirements.txt |
| Python | Conda | environment.yml |
| PHP | Composer | composer.json |
| Java | Maven | pom.xml |
| Java | Gradle | build.gradle |
| Kotlin | Gradle | build.gradle.kts |
| C# | NuGet | *.csproj |
| C/C++ | Conan | conanfile.txt |
| C/C++ | Conan | conanfile.py |
| C/C++ | vcpkg | vcpkg.json |
故障排除
运行代码仓库 X-Ray 时出现 401: Unauthorized 错误
运行代码仓库 X-Ray 时,您可能会收到一个显示 401: Unauthorized 的错误。
当您购买该插件时,GitLab Duo Pro 插件会链接到一个组。要解决此错误,请确保您的当前项目是拥有 GitLab Duo Pro 插件的组的一部分。
此链接可以是以下任一种:
- 直接链接,即项目位于拥有 GitLab Duo Pro 插件的组中。
- 间接链接,例如,当前项目组的父组拥有 GitLab Duo Pro 插件。