Code Suggestions 문제 해결
GitLab v19.5요약
GitLab Duo Code Suggestions를 사용할 때 다음과 같은 문제가 발생할 수 있습니다. 인스턴스가 Code Suggestions 실행 요건을 충족하는지는 상태 점검으로 확인할 수 있습니다. GitLab Duo 문제 해결에 대한 자세한 내용은 다음 문서를 참고합니다.
GitLab Duo Code Suggestions를 사용할 때 다음과 같은 문제가 발생할 수 있습니다.
인스턴스가 Code Suggestions 실행 요건을 충족하는지는 상태 점검으로 확인할 수 있습니다.
GitLab Duo 문제 해결에 대한 자세한 내용은 다음 문서를 참고합니다.
제안이 표시되지 않음#
제안이 표시되지 않으면 다음 사항을 확인합니다.
- GitLab Duo가 올바르게 구성되어 있습니다.
- 지원되는 언어와 편집기 확장을 사용하고 있습니다.
- 편집기 확장이 올바르게 구성되어 있습니다.
그래도 제안이 표시되지 않으면 IDE 별로 다음 문제 해결 단계를 수행합니다.
Code Suggestions에서 401 오류 반환#
Code Suggestions는 구독을 동기화하는 라이선스 토큰에 의존합니다.
토큰이 만료되면 Code Suggestions는 상태 코드 401과 함께 다음 오류를 반환합니다.
Token validation failed in Language Server:
(Failed to check token: Error: Fetching Information about personal access token
GitLab 이 클라우드 서버에 접근할 수 있다면 라이선스를 수동으로 동기화해 봅니다.
인증 문제 해결#
최근 변경된 인증 방식, 특히 토큰 체계가 원인일 수 있습니다. 이 문제를 해결하려면 다음 단계를 수행합니다.
- GitLab 계정 설정에서 기존 개인 액세스 토큰을 제거합니다.
- OAuth를 사용해 GitLab 계정을 다시 승인합니다.
- 여러 파일 확장자로 Code Suggestions 기능을 테스트해 문제가 해결되었는지 확인합니다.
오류 422: 기본 GitLab Duo 네임스페이스 없음#
Code Suggestions cannot detect a namespace for this project. To continue, please set a default GitLab Duo namespace in your user preferences.라는 오류가 발생할 수 있습니다.
이 문제는 여러 GitLab Duo 네임스페이스에 속해 있거나, GitLab 원격이 구성되지 않은 프로젝트를 로컬에서 작업할 때 발생합니다.
이 문제를 해결하려면 기본 GitLab Duo 네임스페이스를 설정합니다.
VS Code 문제 해결#
다음 내용은 VS Code에 한정된 Code Suggestions 문제 해결 문서입니다.
그 밖의 GitLab for VS Code 문제 해결은 GitLab for VS Code 확장 문제 해결을 참고합니다.
VS Code 또는 GitLab Web IDE에서 제안이 표시되지 않음#
GitLab Self-Managed를 사용한다면 GitLab Web IDE의 Code Suggestions가 활성화되어 있는지 확인합니다. 로컬 IDE로 사용하는 VS Code에도 같은 설정이 적용됩니다.
- IDE에서 설정 편집기를 엽니다.
- macOS에서는 Command+,를 누릅니다.
- Windows 또는 Linux에서는 Control+,를 누릅니다.
- GitLab Duo 설정으로 이동합니다.
- VS Code에서는 Extensions > GitLab > GitLab Duo를 선택합니다.
- GitLab Web IDE에서는 Extensions > GitLab Workflow > GitLab Duo를 선택합니다.
- GitLab › Duo Code Suggestions: Enabled에서 체크박스를 선택합니다.
Code Suggestions 로그 보기#
IDE에서 Code Suggestions가 활성화되어 있는데도 제안이 표시되지 않으면 다음 단계를 수행합니다.
- IDE에서 설정 편집기를 엽니다.
- macOS에서는 Command+,를 누릅니다.
- Windows 또는 Linux에서는 Control+,를 누릅니다.
- Other 설정으로 이동합니다.
- VS Code에서는 Extensions > GitLab > Other를 선택합니다.
- GitLab Web IDE에서는 Extensions > GitLab Workflow > Other를 선택합니다.
- GitLab: Debug에서 체크박스를 선택합니다.
- Web IDE는 마켓플레이스 확장이 활성화되어 있어야 합니다.
- 상단 메뉴에서 View > Output을 선택해 하단 패널을 연 다음, 아래 중 하나를 수행합니다.
- 명령 팔레트에서
GitLab: Show Extension Logs를 선택합니다. - 하단 패널 오른쪽에서 드롭다운 목록을 선택해 로그를 필터링합니다. GitLab을 선택합니다.
- 명령 팔레트에서
- 설정 편집기에서 GitLab Duo 설정으로 이동합니다.
- GitLab Duo Code Suggestions 체크박스를 해제했다가 다시 선택합니다.
코드 생성 결과의 스트리밍 비활성화#
기본적으로 코드 생성은 AI가 생성한 코드를 스트리밍합니다. 스트리밍은 코드 스니펫이 모두 생성될 때까지 기다리지 않고 생성된 코드를 편집기로 점진적으로 전달합니다. 이 방식은 더 대화형이고 반응이 빠른 경험을 제공합니다.
코드 생성 결과를 완성된 뒤에만 보려면 스트리밍을 끌 수 있습니다. 스트리밍을 비활성화하면 코드 생성 요청이 처리되기까지 더 오래 걸리는 것처럼 느껴질 수 있습니다. 스트리밍을 비활성화하려면 다음 단계를 수행합니다.
-
VS Code에서 설정 편집기를 엽니다.
- macOS에서는 Command+,를 누릅니다.
- Windows 또는 Linux에서는 Control+,를 누릅니다.
-
오른쪽 상단에서 **Open Settings (JSON)**을 선택해
settings.json파일을 편집합니다.
-
settings.json파일에 다음 줄을 추가하거나, 이미 있으면false로 설정합니다."gitlab.featureFlags.streamCodeGenerations": false, -
변경 사항을 저장합니다.
오류: 직접 연결 실패#
히스토리
- 직접 연결이 GitLab 17.2에서 도입되었습니다.
지연 시간을 줄이기 위해 GitLab for VS Code 확장은 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 인스턴스를 거치는 간접 연결은 약 100ms 더 느리지만 그 외에는 동일하게 동작합니다. 이 문제는 LAN 방화벽이나 프록시 설정 등 네트워크 연결 문제로 발생하는 경우가 많습니다.
JetBrains IDE 문제 해결#
다음 내용은 JetBrains IDE에 한정된 Code Suggestions 문제 해결 문서입니다.
JetBrains IDE의 Code Suggestions 외 문제 해결은 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#
이 오류는 GitLab Language Server 프로세스로 전달된 연결 인스턴스 URL과 인증 토큰이 유효하지 않을 때 발생합니다. Code Suggestions를 다시 활성화하려면 다음 단계를 수행합니다.
- IDE 상단 바에서 IDE 이름을 선택한 다음 Settings를 선택합니다.
- 왼쪽 사이드바에서 Tools > GitLab Duo를 선택합니다.
- Connection에서 Verify setup을 선택합니다.
- 필요에 따라 Connection 정보를 갱신합니다.
- Verify setup을 선택하고 인증이 성공하는지 확인합니다.
- OK 또는 Save를 선택합니다.
Microsoft Visual Studio 문제 해결#
다음 내용은 Microsoft Visual Studio에 한정된 Code Suggestions 문제 해결 문서입니다.
Microsoft Visual Studio의 Code Suggestions 외 문제 해결은 Visual Studio 문제 해결을 참고합니다.
IntelliCode 누락#
Code Suggestions는 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 Installer가 설치를 마칠 때까지 기다립니다.
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 확장을 모두 비활성화합니다.
- Code Suggestions가 정상적으로 수신되는지 확인합니다.
- 확장을 하나씩 다시 활성화하면서 매번 Code Suggestions를 테스트해 충돌하는 확장을 찾습니다.
Neovim 문제 해결#
다음 내용은 Neovim에 한정된 Code Suggestions 문제 해결 문서입니다.
Neovim의 Code Suggestions 외 문제 해결은 Neovim 문제 해결을 참고합니다.
코드 완성 실패#
-
Neovim에서
omnifunc가 설정되어 있는지 확인합니다.:verbose set omnifunc? -
Neovim에서 다음 명령을 실행해 Language Server가 동작 중인지 확인합니다.
:lua =vim.lsp.get_active_clients() -
~/.local/state/nvim/lsp.log에서 Language Server 로그를 확인합니다. -
Neovim에서 다음 명령을 실행해
vim.lsp로그 경로에 오류가 있는지 확인합니다.:lua =vim.cmd('view ' .. vim.lsp.get_log_path())
코드 완성의 지연 시간 문제#
코드 완성에 특정 모델이 지정된 프로젝트에서 좌석을 배정받은 경우 다음과 같이 동작합니다.
- IDE 확장이 AI Gateway 로의 직접 연결을 비활성화합니다.
- 코드 완성 요청은 GitLab 모놀리스를 거치며, GitLab 모놀리스가 지정된 모델을 선택해 해당 요청에 응답합니다.
이로 인해 코드 완성 요청의 지연 시간이 늘어날 수 있습니다.