トラブルシューティングコード提案
- プラン: 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のトラブルシューティング。
- GitLab Duoチャットのトラブルシューティング。
- GitLab Duo Self-Hostedのトラブルシューティング。
提案が表示されない
提案が表示されない場合は、以下を確認してください:
提案がまだ表示されない場合は、IDEごとに以下のトラブルシューティング手順を試してください:
コード提案が401エラーを返す
コード提案は、GitLabとのサブスクリプションを同期する ライセンストークンに依存しています。
トークンの有効期限が切れると、トークンの有効期限が切れたときに、GitLab Duoコード提案はステータス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のコード提案固有のトラブルシューティング用です。
VS Codeのコード提案以外のトラブルシューティングについては、VS Code用GitLab Workflow拡張機能のトラブルシューティングを参照してください。
VS CodeまたはGitLab Web IDEで提案が表示されない
GitLab Self-Managedを使用している場合は、GitLab Web IDEのコード提案が有効になっていることを確認してください。ローカルIDEとして、VS Codeにも同じ設定が適用されます。
- 左側のサイドバーで、Extensions(拡張機能) > GitLab Workflowを選択します。
- 設定( )を選択し、Extension Settings(拡張機能の設定)を選択します。
- GitLab > Duo Code Suggestions(GitLab Duoコード提案)で、GitLab Duoコード提案チェックボックスを選択します。
コード提案のログを表示
コード提案がIDEで有効になっているにもかかわらず、提案がまだ表示されない場合:
- IDEで、GitLab WorkflowExtension Settings(拡張機能の設定)で、GitLabを有効にします: デバッグ。
- Web IDEの場合は、マーケットプレイス拡張機能が有効になっている必要があります。
- 上部のメニューで、表示 > Output(出力)を選択して下部のパネルを開き、次のいずれかを行います:
- コマンドパレットで、
GitLab: Show Extension Logsを選択します。 - 下部のパネルの右側で、ドロップダウンリストを選択してログをフィルタリングします。GitLab Workflowを選択します。
- コマンドパレットで、
- GitLab WorkflowExtension Settings(拡張機能の設定)で、GitLab Duoコード提案チェックボックスをオフにしてから再びオンにします。
コード生成結果のストリーミングを無効にする
デフォルトでは、コード生成はAIによって生成されたコードをストリーミングします。ストリーミングは、生成されたコードを、コードスニペット全体が生成されるのを待つのではなく、段階的にエディタに送信します。これにより、よりインタラクティブで応答性の高いエクスペリエンスが実現します。
コード生成の結果が完了した場合にのみ表示したい場合は、ストリーミングをオフにできます。ストリーミングを無効にすると、コード生成リクエストの解決に時間がかかると認識される可能性があります。ストリーミングを無効にするには:
VS Codeの上部のバーで、コード > 設定 > 設定に移動します。
右上隅にあるOpen Settings (JSON)(設定を開く(JSON))を選択して、
settings.jsonファイルを編集します:settings.jsonファイルで、この行を追加するか、すでに存在する場合はfalseに設定します:"gitlab.featureFlags.streamCodeGenerations": false,変更を保存します。
エラー: 直接接続が失敗する
レイテンシーを削減するために、Workflow拡張機能は提案のコード補完リクエストをGitLabインスタンスを回避する、GitLab Cloud Connectorに直接送信しようとします。このネットワーキング接続は、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で提案が表示されない
- ツール > GitLab Duoメニューから、Verify setup(セットアップの確認)を選択します。ヘルスチェックが成功することを確認してください。
- JetBrains IDEが、作業中のファイルの言語をネイティブでサポートしていることを確認します。設定 > 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を選択します。
- 接続で、Verify setup(セットアップの確認)を選択します。
- 必要に応じて、接続の詳細を更新します。
- Verify setup(セットアップの確認)を選択し、認証が成功したことを確認します。
- OKまたは保存を選択します。
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インストーラー)を検索して開きます。
- Visual Studioインスタンスを選択し、Modify(変更)を選択します。
- Individual components(個々のコンポーネント)タブで、IntelliCodeを検索します。
- コンポーネントのチェックボックスをオンにしてから、右下のModify(変更)を選択します。
- Visual Studioインストーラーがインストールを完了するまで待ちます。
Microsoft Visual Studioで提案が表示されない
- 拡張機能を正しく設定していることを確認します。
- ツール > オプションメニューから、GitLabオプションを見つけます。Log Level(ログレベル)がデバッグに設定されていることを確認します。
- 表示 > Output(出力)で、拡張機能のログを開きます。ドロップダウンリストをログフィルターとしてGitLab Extension(GitLab拡張機能)に変更します。
- デバッグログに同様の出力が含まれていることを確認します:
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のトラブルシューティングを参照してください。
コード補完が失敗する
omnifuncがNeovimに設定されていることを確認します::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())
