JetBrains 플러그인 문제 해결

circle-exclamation

상세 디버그 로그 가져오기

circle-exclamation

JetBrains IDE에서 Snyk 언어 서버 디버그 로그를 활성화하려면 IDE를 사용하여 로그 수준을 디버그로 변경합니다 (디버그 로그 설정 (사용자 지정 디버그 로그 구성)으로 이동).

Shift 키를 빠르게 두 번 누르고 동작 탭을 선택합니다. 그런 다음 디버그를 검색합니다. 또는 메뉴에서 디버그 로그 설정을 선택합니다 (JetBrains Rider에서는 사용할 수 없음).

동작 탭
디버그 로그 설정을 열려면 동작 탭 사용
동작 검색
디버그 로그 설정에서 사용자 지정 디버그 로그 구성으로 이동

Snyk Language Server를 자체 줄에 입력하면 언어 서버의 디버그 로깅이 활성화됩니다. 새로운 디버그 수준 로깅이 활성화된 상태로 Snyk 언어 서버를 다시 로드하려면 IDE를 다시 시작하십시오.

Snyk 언어 서버 구성
사용자 지정 디버그 로그 구성에서 디버그 모드로 설정된 Snyk 언어 서버 구성

디버그 로그를 보려면 Finder(Mac)에서 도움말 > 로그 표시 또는 Explorer(Windows)에서 로그 표시로 이동합니다. 그런 다음 폴더에서 idea.log, idea.1.log 등의 파일을 엽니다.

Finder에 로그 표시
Intellij 로그 폴더 열기

신뢰할 수 있는 루트 인증서 문제

IDE가 사용자 지정 인증서를 해결하는 방법과 잘못된 구성으로 인해 플러그인에 네트워크 오류가 발생하는 경우 인증서를 가져오는 방법에 대한 자세한 내용은 JetBrains 설명서arrow-up-right를 참조하십시오.

JetBrains 플러그인에서 Snyk 코드 확인란 비활성화됨

때때로 JetBrains 플러그인의 Snyk 코드 확인란이 비활성화됩니다. 몇 가지 가능한 이유는 다음과 같습니다.

  • 네트워크 또는 프록시 설정: 네트워크 또는 프록시 설정이 올바르게 구성되지 않은 경우 확인란이 비활성화될 수 있습니다. 인증서 대체 기능이 있는 MITM 프록시가 있는지 확인하십시오. 또한 CLI 또는 cURL과 같은 다른 도구를 사용하여 엔드포인트 API 및 deeproxy에 대한 연결을 설정할 수 있는지 확인하십시오.

  • 잘못된 엔드포인트 주소: Snyk 코드 플러그인 구성의 엔드포인트 주소가 잘못된 경우 확인란이 비활성화됩니다. 이 문제를 해결하려면 지침을 참조하고 엔드포인트 주소가 올바른지 확인하십시오. 그런 다음 플러그인을 다시 시작하십시오.

  • Snyk 코드가 서버 측에서 비활성화됨: Snyk 조직 설정에서 Snyk 코드가 비활성화된 경우 확인란이 비활성화됩니다. 이 문제를 해결하려면 IntelliJ 설정에 표시된 지침을 따르십시오. IDE를 다시 시작하십시오.

  • JetBrains 로그를 확인하십시오: 자세한 내용은 IDE 로그 파일 찾기arrow-up-right를 참조하십시오.

정의되지 않은 Python 버전

Snyk은 종속성을 스캔하고 찾는 데 Python을 사용합니다.

여러 Python 버전을 사용하는 경우 --command 옵션을 사용하여 실행을 위한 올바른 Python 명령을 지정하십시오. 플러그인은 프로젝트와 관련된 Python 버전을 감지하지 않습니다.

JCEF 문제 및 문제 세부 정보 표시 시 오류

Snyk Security 플러그인이 설치된 Jetbrains 2025.1에서 java.lang.NullPointerException이 발생했습니다. 또한 Android Studio는 JCEF를 기본적으로 활성화하지 않습니다.

제공된 로그의 초기 분석 (Jetbrains 2025.1 플랫폼)

발생한 예외는 NullPointerException이며 메시지는 Cannot read field "objId" because "robj" is null입니다. 스택 추적을 검토하면 이 오류의 원인과 전파를 알 수 있습니다.

스택 추적에서 얻은 주요 관찰:

  • 오류는 JCEF 원격 메시징 인프라 내 깊은 곳, 특히 com.jetbrains.cef.remote.router.RemoteMessageRouterImpl.create의 38행에서 발생합니다. 이 클래스는 JetBrains의 JCEF 구현의 일부로, out-of-process 브라우저와의 통신을 처리합니다.

  • Snyk 플러그인은 오류로 이어지는 호출 시퀀스를 시작합니다. 추적은 io.snyk.plugin.ui.jcef.OpenFileLoadHandlerGenerator.generateJBCefJSQuery를 생성하려고 시도하는 것을 보여줍니다(com.intellij.ui.jcef.JBCefJSQuery.create를 통해).

  • JBCefJSQuery.create는 내부적으로 com.intellij.ui.jcef.JBCefApp.createMessageRouter를 호출하고, 이는 다시 CefMessageRouter를 생성하려고 시도합니다. 이 프로세스는 궁극적으로 원격 라우터 초기화 내에서 실패합니다.

Snyk 플러그인이 설치된 IntelliJ IDEA 2025.1에서 발생한 NullPointerException: robj가 null이므로 "objId" 필드를 읽을 수 없습니다는 IJPL-186252로 추적되는 알려진 플랫폼 문제의 한 형태입니다. 이 문제는 IntelliJ IDEA 2025.1의 새로운 기본 out-of-process JCEF 아키텍처와 강력하게 연관되어 있습니다. Snyk 플러그인은 UI 렌더링을 위해 JCEF를 사용하는 작업에서 이 기본 플랫폼 불안정성을 트리거했습니다.

Android Studio 문제 해결 방법

가장 효과적이고 권장되는 해결 방법은 다음과 같습니다.

Android Studio Koala (2024.1.1)부터 JCEF (Java Chromium Embedded Framework)가 포함되지만 기본적으로 활성화되지는 않습니다. JCEF 기능을 사용하려면 다음 단계를 따라 수동으로 활성화해야 합니다.

1단계: JCEF 샌드박스 비활성화

  1. Android Studio를 엽니다.

  2. 도움말 > **동작 찾기...**로 이동합니다. (또는 Windows/Linux에서는 Ctrl+Shift+A, macOS에서는 Cmd+Shift+A를 누릅니다.)

  3. 검색 상자에 **레지스트리...**를 입력하고 선택합니다.

  4. 나타나는 레지스트리 대화 상자에서 다음을 검색합니다. ide.browser.jcef.sandbox.enable

  5. 옆의 상자를 선택 취소하여 샌드박스를 비활성화합니다.

2단계: JCEF 호환 Java 런타임 선택

  1. 다시 도움말 > **동작 찾기...**로 이동합니다. (또는 Windows/Linux에서는 Ctrl+Shift+A, macOS에서는 Cmd+Shift+A를 누릅니다.)

  2. **IDE용 부트 Java 런타임 선택...**을 검색하고 선택합니다.

  3. 목록에서 JCEF가 포함된 JetBrains 런타임과 유사한 런타임을 선택합니다.

  4. 확인을 클릭하여 변경 사항을 적용합니다.

  5. 메시지가 표시되면 Android Studio를 다시 시작합니다.

Jetbrains 2025.1 플랫폼 문제 해결 방법

IntelliJ IDEA VM 옵션 -Dide.browser.jcef.out-of-process.enabled=false를 적용하여 IJPL-186252에 설명된 버그를 우회하는 것으로 알려진 in-process JCEF 모드로 되돌립니다.

또한 IntelliJ IDEA 2025.1.x 버전의 최신 패치 릴리스로 계속 업데이트하는 것이 좋습니다. 향후 업데이트에는 IJPL-186252에 대한 영구 수정이 포함될 수 있으므로 플러그인별 해결 방법이나 수동 VM 옵션 조정이 불필요해질 수 있습니다. IDE 플랫폼과 광범위한 플러그인 생태계 간의 역학 관계는 이러한 진단 및 적응 문제를 수반하는 경우가 많으며, 한 계층의 변경 사항은 다른 계층에서 전체 시스템 안정성과 사용자 경험을 유지하기 위한 응답 및 조정을 필요로 합니다.

Snyk 컨테이너 및 Kubernetes JetBrains 통합 작동 방식

JetBrains 플러그인은 Kubernetes 워크로드 파일을 스캔하고 사용된 이미지를 수집합니다. 플러그인이 컨테이너 이미지를 올바르게 스캔하고 있는지 확인하려면 다음을 확인할 수 있습니다.

  • 이미지 정의가 프로젝트의 Kubernetes YAML 파일에 있는지 여부. image:nginx:1.17.1과 같이 이미지 YAML 속성에 imageValue:imageKey 형식으로 매핑된 이미지 이름으로 이미지가 지정되었는지 확인하십시오.

  • 컨테이너 이미지가 로컬에서 성공적으로 빌드되었는지, 컨테이너 레지스트리에 푸시되었는지 또는 둘 다인지 여부. Kubernetes YAML 파일에서 컨테이너 이미지를 참조하기 전에 이를 확인하는 것도 좋은 방법입니다.

오류가 발생하면 Snyk 지원팀에 문의arrow-up-right하십시오.

발견된 각 이미지에 대해 Snyk CLI로 테스트를 수행합니다.

  • Snyk 컨테이너가 이미지에 대해 테스트를 수행하는 방법에 대한 자세한 내용은 Snyk CLI for Snyk Container를 참조하십시오.

  • 이미지를 테스트하는 동안 CLI는 이미지가 Docker 데몬에 로컬에서 사용 가능하지 않은 경우 이미지를 다운로드합니다.

  • Snyk은 컨테이너 스캔 범위를 확장할 계획이므로, Dockerfile 또는 지원하려는 워크플로와 같은 더 많은 파일이 있는 경우 Snyk 지원arrow-up-right에 기능 요청을 제출하십시오.

Last updated