コード提案のトラブルシューティング
- プラン: Premium、Ultimate
- アドオン: GitLab Duo Core、Pro、またはEnterprise、GitLab Duo with Amazon Q
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLab Duoコード提案を使用する際に、以下の問題が発生する可能性があります。
インスタンスがコード提案を実行するための要件を満たしているかどうかをテストするには、ヘルスチェックを実行します。
GitLab Duoのトラブルシューティングの詳細については、以下を参照してください:
提案が表示されない
提案が表示されない場合は、以下を確認してください:
- GitLab Duoが正しく設定されていることを確認してください。
- サポートされている言語とエディタ拡張機能を使用していることを確認してください。
- エディタ拡張機能が正しく設定されていることを確認してください。
それでも提案が表示されない場合は、異なるIDEについて、次のトラブルシューティング手順を試してください:
コード提案が401エラーを返す
コード提案は、GitLabとのサブスクリプションを同期するトークンに依存しています。
トークンの有効期限が切れると、コード提案はステータス401で次のエラーを返します:
Token validation failed in Language Server:
(Failed to check token: Error: Fetching Information about personal access tokenGitLabがクラウドサーバーにアクセスできる場合は、ライセンスの手動同期を試してください。
認証のトラブルシューティング
この問題は、認証の最近の変更、特にトークンシステムに起因する可能性があります。この問題を解決するには、以下の手順に従います:
- 既存のパーソナルアクセストークンをGitLabアカウントの設定から削除します。
- OAuthを使用してGitLabアカウントを再認可します。
- さまざまなファイル拡張子でコード提案機能をテストし、問題が解決されたかどうかを確認します。
VS Codeのトラブルシューティング
次のドキュメントは、VS Code固有のコード提案のトラブルシューティングに関するものです。
その他のGitLab for VS Codeのトラブルシューティングについては、GitLab for VS Code拡張機能のトラブルシューティングを参照してください。
VS CodeまたはGitLab Web IDEで提案が表示されない
GitLab Self-Managedを使用している場合は、GitLab Web IDEのコード提案が有効になっていることを確認してください。ローカルIDEとして、同じ設定がVS Codeに適用されます。
- 左サイドバーで、Extensions > GitLabを選択します。
- Manage( )を選択し、Settingsを選択します。
- GitLab > Duo Code Suggestionsで、GitLab Duo Code Suggestionsチェックボックスをオンにします。
コード提案ログを表示する
コード提案がIDEに対して有効になっているにもかかわらず提案がまだ表示されない場合、以下の手順に従います:
- IDEで、GitLab for VS CodeのExtension Settingsで、GitLab: Debugを有効にします。
- Web IDEの場合、マーケットプレイス拡張機能が有効になっている必要があります。
- 上部のメニューで、View > Outputを選択して下部のパネルを開き、次のいずれかの操作を行います:
- コマンドパレットで、
GitLab: Show Extension Logsを選択します。 - 下部のパネルの右側にあるドロップダウンリストを選択して、ログをフィルタリングします。GitLabを選択します。
- コマンドパレットで、
- GitLab for VS CodeのExtension Settingsで、GitLab Duo Code Suggestionsチェックボックスをオフにしてから再度オンにします。
コード生成出力のストリーミングを無効にする
デフォルトでは、コード生成はAIが生成したコードをストリーミングします。ストリーミングは、コードスニペット全体の生成を待つのではなく、生成されたコードを逐次エディタに送信します。これにより、よりインタラクティブで応答性の高いエクスペリエンスが可能になります。
コード生成出力が完了した場合にのみ表示したい場合は、ストリーミングをオフにできます。ストリーミングを無効にすると、コード生成リクエストの解決に時間がかかるように感じられる場合があります。ストリーミングを無効にするには、次の手順に従います:
VS Codeで、トップバーのコード > 設定 > 設定へ移動します。
右上隅にある**Open Settings(JSON)**を選択して、
settings.jsonファイルを編集します:settings.jsonファイルに次の行を追加するか、すでに存在する場合はfalseに設定します:"gitlab.featureFlags.streamCodeGenerations": false,変更を保存します。
エラー: 直接接続に失敗する
レイテンシーを削減するため、GitLab for VS Code拡張機能は提案完了リクエストをGitLab Cloud Connectorに直接送信し、GitLabインスタンスをバイパスしようとします。このネットワーク接続では、VS Code拡張機能のプロキシと証明書の設定は使用されません。
GitLabインスタンスが直接接続をサポートしていない場合、またはネットワークによって拡張機能がGitLab Cloud Connectorに接続できない場合は、ログに次の警告が表示されることがあります:
Failed to fetch direct connection details from GitLab instance.
Code suggestion requests will be sent to GitLab instance.このエラーは、インスタンスが直接接続をサポートしていないか、設定が誤っていることを意味します。
次のエラーが表示された場合、拡張機能はGitLab Cloud Connectorに接続できず、GitLabインスタンス経由にリバートします:
Direct connection for code suggestions failed.
Code suggestion requests will be sent to your GitLab instance.GitLabインスタンス経由の間接接続は約100ミリ秒遅くなりますが、それ以外は同じように機能します。この問題は多くの場合、LANファイアウォールやプロキシ設定など、ネットワーク接続の問題が原因で発生します。
JetBrains IDEのトラブルシューティング
次のドキュメントは、JetBrains IDE固有のコード提案のトラブルシューティングに関するものです。
JetBrains IDEのコード提案以外のトラブルシューティングについては、JetBrainsのトラブルシューティングを参照してください。
JetBrains IDEで提案が表示されない
- Tools > GitLab Duoメニューから、Verify setupを選択します。ヘルスチェックに合格することを確認してください。
- JetBrains IDEが、作業中のファイルの言語をネイティブにサポートしていることを確認してください。Settings > Languages & Frameworksに移動して、JetBrains IDEでサポートされている言語とフレームワークの完全なリストを確認します。
エラー: unable to find valid certification path to requested target
GitLab Duoプラグインは、GitLabインスタンスに接続する前にTLS証明書情報を検証します。カスタムSSL証明書を追加できます。
エラー: Failed to check token
このエラーは、指定された接続インスタンスURLや、GitLab言語サーバープロセスに渡された認証トークンが無効な場合に発生します。コード提案を再度有効にするには、次の手順に従います:
- IDEで、トップバーからIDE名を選択し、次に設定を選択します。
- 左サイドバーで、ツール > GitLab Duoを選択します。
- Connectionで、Verify setupを選択します。
- 必要に応じて、Connectionの詳細を更新します。
- Verify setupを選択し、認証が成功することを確認します。
- OKまたはSaveを選択します。
Microsoft Visual Studioのトラブルシューティング
次のドキュメントは、Microsoft Visual Studio固有のコード提案のトラブルシューティングに関するものです。
Microsoft Visual Studioのコード提案以外のトラブルシューティングについては、Visual Studioのトラブルシューティングを参照してください。
IntelliCodeがない
コード提案には、Visual StudioのIntelliCodeコンポーネントが必要です。このコンポーネントがない場合は、Visual Studioの起動時に次のようなエラーが表示されることがあります:
SetSite failed for package [VisualStudioPackage]Source: 'Microsoft.VisualStudio.Composition'
Description: Expected 1 export(s) with contract name "Microsoft.VisualStudio.Language.Suggestions.SuggestionServiceBase"
but found 0 after applying applicable constraints.
Microsoft.VisualStudio.Composition.CompositionFailedException:
Expected 1 export(s) with contract name "Microsoft.VisualStudio.Language.Suggestions.SuggestionServiceBase"
but found 0 after applying applicable constraints.
at Microsoft.VisualStudio.Composition.ExportProvider.GetExports(ImportDefinition importDefinition)
at Microsoft.VisualStudio.Composition.ExportProvider.GetExports[T,TMetadataView](String contractName, ImportCardinality cardinality)
at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T,TMetadataView](String contractName)
at Microsoft.VisualStudio.Composition.ExportProvider.GetExportedValue[T]()
at Microsoft.VisualStudio.ComponentModelHost.ComponentModel.GetService[T]()
[...]この問題を修正するには、IntelliCodeコンポーネントをインストールします:
- Windowsのスタートメニューで、Visual Studio Installerを検索して開きます。
- Visual Studioインスタンスを選択し、次にModifyを選択します。
- Individual componentsタブで、IntelliCodeを検索します。
- コンポーネントのチェックボックスを選択し、右下のModifyを選択します。
- Visual Studioインストーラーがインストールを完了するまで待ちます。
Microsoft Visual Studioで提案が表示されない
- 拡張機能を正しく設定していることを確認します。
- Tools > Optionsメニューから、GitLabオプションを見つけます。Log LevelがDebugに設定されていることを確認します。
- View > Outputで、拡張機能のログを開きます。ログフィルターとして、ドロップダウンリストをGitLab Extensionに変更します。
- デバッグログに同様の出力が含まれていることを確認します:
14:48:21:344 GitlabProposalSource.GetCodeSuggestionAsync
14:48:21:344 LsClient.SendTextDocumentCompletionAsync("GitLab.Extension.Test\TestData.cs", 34, 0)
14:48:21:346 LS(55096): time="2023-07-17T14:48:21-05:00" level=info msg="update context"別の拡張機能が同様の提案または補完機能を提供している場合、拡張機能が提案を返さない可能性があります。これを解決するには、次の手順に従います:
- 他のすべてのVisual Studio拡張機能を無効にします。
- コード提案を受け取れるようになったことを確認します。
- 拡張機能を1つずつ再度有効にし、毎回コード提案をテストして、競合する拡張機能を見つけます。
Neovimのトラブルシューティング
次のドキュメントは、Neovim固有のコード提案のトラブルシューティングに関するものです。
Neovimのコード提案以外のトラブルシューティングについては、Neovimのトラブルシューティングを参照してください。
コード補完が失敗する
Neovimで
omnifuncが設定されていることを確認します::verbose set omnifunc?Neovimで次のコマンドを実行して、言語サーバーがアクティブであることを確認します:
:lua =vim.lsp.get_active_clients()~/.local/state/nvim/lsp.logで言語サーバーのログを確認します。Neovimで次のコマンドを実行して、
vim.lspのログパスにエラーがないか確認します::lua =vim.cmd('view ' .. vim.lsp.get_log_path())
コード補完のレイテンシーの問題
コード補完用に特定のモデルが選択されたプロジェクトにシートが割り当てられている場合、以下のようになります:
- IDE拡張機能がAIゲートウェイへの直接接続を無効にします。
- コード補完リクエストはGitLabモノリスを経由し、次に指定されたモデルを選択して、これらのリクエストに応答します。
これにより、コード補完リクエストのレイテンシーが増加する可能性があります。
