リポジトリX-Ray
- プラン: Premium、Ultimate
- アドオン: GitLab Duo ProまたはEnterprise
- 提供形態: 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はバックグラウンドジョブをトリガーします。このジョブは、リポジトリ内の該当する設定ファイルをスキャンして解析します。
通常、各プロジェクトで一度に実行されるスキャンジョブは1つのみです。2回目のスキャンがトリガーされたときに、スキャンが既に進行中の場合、その2回目のスキャンは、最初のスキャンが完了するまで実行を待機します。これにより、最新の設定ファイルデータが解析され、データベースで更新されるまでにわずかな遅延が発生する可能性があります。
コード生成リクエストが作成されると、解析されたデータからの最大300個のライブラリが、追加のコンテキストとしてプロンプトに含まれます。
リポジトリX-Rayを有効にする
プロジェクトがGitLab Duo Code Suggestionsにアクセスできる場合、リポジトリX-Rayサービスは自動的に有効になります。
サポートされている言語と依存関係マネージャー
リポジトリX-Rayは、リポジトリのルートから最大2つのディレクトリレベルを検索します。たとえば、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パターンに一致するすべての設定ファイルが処理されます。