Code Suggestions와 함께 사용하는 Repository X-Ray
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Repository X-Ray는 자동으로 다음을 보강합니다: 이를 위해 Repository X-Ray는 다음을 통해 코드 어시스턴트에 프로젝트의 코드베이스와 의존성에 대한 더 많은 인사이트를 제공합니다: 사용 중인 라이브러리 및 기타 의존성을 이해함으로써 Repository X-Ray는 코드 어시스턴트가 프로젝트에서 사용되는 코딩 패턴, 스타일 및 기술에 맞게 제안을 맞춤화할 수 있도록 돕습니다.
히스토리
- GitLab 16.7에서 도입되었습니다.
- GitLab 17.6 이상에서 GitLab Duo 애드온이 필요하도록 변경되었습니다.
Repository X-Ray는 자동으로 다음을 보강합니다:
- 코드 권장 사항의 정확성과 관련성을 향상하기 위해 프로젝트의 의존성에 대한 추가 컨텍스트를 제공하여 GitLab Duo Code Suggestions에 대한 코드 생성 요청.
- 코드 리팩토링, 코드 수정, 테스트 작성 요청.
이를 위해 Repository X-Ray는 다음을 통해 코드 어시스턴트에 프로젝트의 코드베이스와 의존성에 대한 더 많은 인사이트를 제공합니다:
- 의존성 관리자 구성 파일(예:
Gemfile.lock,package.json,go.mod) 검색. - 해당 파일 내용에서 라이브러리 목록 추출.
- 추출된 목록을 코드 생성, 코드 리팩토링, 코드 수정, 테스트 작성 요청에서 GitLab Duo Code Suggestions에서 사용할 추가 컨텍스트로 제공.
사용 중인 라이브러리 및 기타 의존성을 이해함으로써 Repository X-Ray는 코드 어시스턴트가 프로젝트에서 사용되는 코딩 패턴, 스타일 및 기술에 맞게 제안을 맞춤화할 수 있도록 돕습니다. 이를 통해 더 원활하게 통합되고 주어진 스택의 모범 사례를 따르는 코드 제안이 생성됩니다.
Repository X-Ray는 코드 완성 요청이 아닌 코드 생성 요청만 향상시킵니다.
Repository X-Ray 작동 방식#
히스토리
- 최대 라이브러리 수가 GitLab 17.6에서 도입되었습니다.
프로젝트의 기본 브랜치에 새 커밋을 push하면 Repository X-Ray가 백그라운드 job을 트리거합니다. 이 job은 저장소에서 해당 구성 파일을 스캔하고 파싱합니다.
일반적으로 각 프로젝트에서 한 번에 하나의 스캔 job만 실행됩니다. 스캔이 이미 진행 중인 동안 두 번째 스캔이 트리거되면 두 번째 스캔은 첫 번째 스캔이 완료될 때까지 기다린 후 실행됩니다. 이로 인해 최신 구성 파일 데이터가 파싱되어 데이터베이스에 업데이트되기 전에 약간의 지연이 발생할 수 있습니다.
코드 생성 요청이 이루어지면 파싱된 데이터에서 최대 300개의 라이브러리가 추가 컨텍스트로 프롬프트에 포함됩니다.
Repository X-Ray 활성화#
히스토리
- GitLab 17.4에서
ai_enable_internal_repository_xray_service라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 17.6에서 일반적으로 사용 가능해졌습니다. 기능 플래그
ai_enable_internal_repository_xray_service가 제거되었습니다.
프로젝트가 GitLab Duo Code Suggestions에 접근할 수 있는 경우 Repository X-Ray 서비스가 자동으로 활성화됩니다.
지원되는 언어 및 의존성 관리자#
Repository X-Ray는 저장소 루트에서 최대 두 디렉토리 수준을 검색합니다. 예를 들어 Gemfile.lock, api/Gemfile.lock, 또는 api/client/Gemfile.lock을 지원하지만 api/v1/client/Gemfile.lock은 지원하지 않습니다. 각 언어에 대해 첫 번째로 일치하는 의존성 관리자만 처리됩니다. 사용 가능한 경우 잠금 파일이 비잠금 파일보다 우선합니다.
| 언어 | 의존성 관리자 | 구성 파일 | GitLab 버전 |
|---|---|---|---|
| C/C++ | Conan | conanfile.py |
17.5 이상 |
| C/C++ | Conan | conanfile.txt |
17.5 이상 |
| C/C++ | vcpkg | vcpkg.json |
17.5 이상 |
| C# | NuGet | *.csproj |
17.5 이상 |
| Go | Go Modules | go.mod |
17.4 이상 |
| Java | Gradle | build.gradle |
17.4 이상 |
| Java | Maven | pom.xml |
17.4 이상 |
| JavaScript | NPM | package-lock.json, package.json |
17.5 이상 |
| Kotlin | Gradle | build.gradle.kts |
17.5 이상 |
| PHP | Composer | composer.lock, composer.json |
17.5 이상 |
| Python | Conda | environment.yml |
17.5 이상 |
| Python | Pip | *requirements*.txt 1 |
17.5 이상 |
| Python | Poetry | poetry.lock, pyproject.toml |
17.5 이상 |
| Ruby | RubyGems | Gemfile.lock |
17.4 이상 |
각주:
- Python Pip의 경우
*requirements*.txtglob 패턴과 일치하는 모든 구성 파일이 처리됩니다.
