이 문서는 SonarQube에서 제공하는 AI 기능에 대한 소개 및 설정에 대한 문서입니다.
SonarQube AI 기능 개요
AI 기능은 상용 버전(Developer, Enterprise, Data Center Edition)에서 사용 가능합니다.
SonarQube는 AI를 활용하여 코드 품질을 개선하는 다양한 기능을 제공합니다.
- AI-기반 코드 수정 제안(AI CodeFix): AI가 코드 스멜(Code Smells), 버그(Bugs), 보안 취약점(Vulnerabilities)에 대한 자동 수정안을 제안
- AI가 생성한 코드 자동 감지(Autodetect AI-generated Code): GitHub Copilot과 같은 AI 기반 코드 생성 도구를 사용하여 생성된 코드를 자동 감지
- AI 코드 품질 보증(AI Code Assurance): AI 코드에 대한 품질 게이트(Quality Gate)를 적용하여 품질 검증
AI-기반 코드 수정 제안(AI CodeFix)
AI CodeFix 기능은 모든 상용 버전에서 사용 가능하며 Early Access 기간 동안 무료로 체험 가능합니다.
OpenAI GPT-4를 활용하여 SonarQube에서 분석된 코드 이슈에 대해 AI가 코드 수정 제안을 제공하는 기능입니다.
코드 스멜(Code Smells), 버그(Bugs), 보안 취약점(Vulnerabilities)에 대한 해결책을 제공합니다.
지원 언어
- Java
- JavaScript
- TypeScript
- Python
- C#
- C++
AI CodeFix 활성화 방법
- SonarQube UI에 관리자로 로그인합니다.
- Administraion > Configuration > AI CodeFix 메뉴로 이동합니다.
- "Enable AI CodeFix"를 체크한 후, 프로젝트 범위를 선택합니다.
- All projects : 현재 생성된 모든 프로젝트 및 새로 생성되는 프로젝트에 AI CodeFix 활성화
- Only selected projects : 특정 프로젝트에서만 AI CodeFix 활성화 (새로 생성되는 프로젝트는 자동으로 활성화되지 않습니다.)
- Save를 클릭하여 설정을 저장합니다.
SonarQube Server에서 AI CodeFix 기능을 사용하려면 인터넷 연결이 필요합니다.
이 기능은 api.sonarqube.io를 통해 제공되며 다음 고정 IP 주소를 허용해야 합니다.
- 99.83.135.55(CIDR: 99.83.135.55/32)
- 15.197.164.24(CIDR: 15.197.164.24/32)
AI CodeFix 비활성화 방법
SonarQube Server에서 AI CodeFix 기능을 완전히 비활성화하고 관리자를 포함한 모든 사용자에게서 숨기려면 다음 방법을 사용할 수 있습니다.
- SonarQube 설정 파일에서 비활성화
- sonar.properties 파일에서 다음 설정을 추가합니다.
sonar.ai.codefix.hidden=true
- sonar.properties 파일에서 다음 설정을 추가합니다.
- 다음 중 하나의 방법으로 SonarSource에 직접 요청
- 메일로 “Disabling AI CodeFix”라는 제목과 함께 contact@sonarsource.com로 요청
- Sonar 지원팀을 통해 요청
AI-기반 코드 수정 제안 생성 방법
AI-기반 코드 수정 제안을 생성하려면 다음 방법을 사용할 수 있습니다.
- 프로젝트에서 이슈 검색 후 세부 정보 페이지로 이동합니다.
- Where is the issue? 혹은 AI CodeFix 탭에서 Generate AI Fix를 클릭합니다.
- Where is the issue?탭
- AI CodeFix 탭
- Where is the issue?탭
- AI CodeFix가 생성되고 AI CodeFix탭에서 diff 뷰가 표시됩니다.
- IDE에 SonarQube 연결모드 가 설정된 경우 View fix in IDE를 선택하여 IDE에서 diff 뷰를 확인할 수 있습니다.
- IDE에서 표시되는 diff 뷰 예시(Visual Studio Code)
AI 생성 코드 자동 감지(Autodetect AI-generated code)
GitHub Copilot을 사용하여 생성된 GitHub의 프로젝트의 코드를 자동 감지하는 기능입니다.
요구사항
- SonarQube Server에서 AI 생성 코드 자동 감지 기능은 기본적으로 활성화되어 있습니다.
글로벌 및 프로젝트 수준에서 기능을 관리하는 방법은 아래 설정 방법을 참고하세요. - 프로젝트 관리자는 GitHub 앱에서 액세스를 활성화해야 합니다.
자동 감지 기능은 SonarQube Server에 GitHub Copilot Business에 대한 액세스를 제공하지 않으면 작동하지 않습니다.
설정 방법
1. SonarQube에서 AI 자동 감지 관리
- Administration > Configuration > General Settings > AI-Generated Code로 이동합니다.
- Autodetect AI-Generated Code를 선택하거나 해제합니다.
2. GitHub 통합
AI 코드 자동 감지 기능은 GitHub 앱을 통해 SonarQube Server가 GitHub Copilot의 Organization 사용 통계를 접근할 수 있도록 하는 방식으로 동작합니다.
1. SonarQube를 Github 앱으로 등록합니다.
2. 조직에 SonarQube Server용 GitHub앱을 설치합니다.
3. SonarQube Server의 글로벌 설정에 GitHub 앱을 추가합니다.
3. 프로젝트 다시 스캔
위의 요구 사항이 충족되면 SonarQube Server는 분석이 수행될 때마다 AI 생성 코드의 존재 여부를 확인합니다.
자동 감지된 코드가 포함된 프로젝트는 프로젝트의 개요 및 프로젝트 정보 페이지에 AI code detected 상태를 표시합니다.
AI 코드 품질 보증(AI Code Assurance)
AI로 생성된 코드의 보안성과 품질을 보장하기 위해 AI 코드에 대한 품질게이트를 설정하고 관리할 수 있는 기능을 제공합니다.
프로젝트에 AI 코드 레이블 지정
프로젝트 설정에서 'AI로 생성된 코드 포함(Contains AI-generated code)' 옵션을 활성화하여 해당 프로젝트가 AI 코드로 구성되어 있음을 표시할 수 있습니다.
AI로 생성된 코드 포함(Contains AI-generated code) 활성화 설정 방법
AI 코드 보증을 위한 품질 게이트 적용
AI 코드가 포함된 프로젝트에는 AI 코드 보증을 위한 품질 게이트를 적용할 수 있습니다.
SonarQube는 'AI 코드용 Sonar way(Sonar way for AI Code)'라는 기본 품질 게이트를 제공하여 AI 코드 보증을 위해 사용할 수 있습니다.
Sonar way for AI code 품질 게이트 조건
Conditions on new code (새 코드에 대한 조건)
No new issues are introduced → 새로운 이슈가 발생하지 않아야 합니다.
All new Security Hotspots are reviewed → 모든 새로운 보안 핫스팟(Security Hotspots)이 검토되어야 합니다.
New code test coverage is greater than or equal to 80.0% → 새 코드의 테스트 커버리지는 80.0% 이상이어야 합니다.
Duplication in the new code is less than or equal to 3.0% → 새 코드에서 중복된 코드 비율은 3.0% 이하이어야 합니다.
Conditions on overall code (전체 코드에 대한 조건)
Security rating: A → 보안 등급(Security rating): A
All security hotspots are reviewed → 모든 보안 핫스팟이 검토되어야 합니다.
Reliability rating: C → 신뢰성 등급(Reliability rating): C
Sonar way for AI code 품질 게이트 커스텀 설정 방법
내부 AI 코드 보증 배지
AI 코드 보증을 위한 품질 게이트 설정 완료 후, 분석을 실행하면 프로젝트 Overview 및 프로젝트 정보 페이지에는 AI 코드 보증 상태를 나타내는 배지가 표시됩니다.
다음은 각 보증 배지가 의미하는 상태입니다.
- AI Code Assurance passed (AI 코드 보증 통과) : 프로젝트가 AI 코드 보증을 위한 품질 게이트를 통과했음을 나타냅니다.
- 프로젝트가 AI 코드 보증을 위한 품질 게이트를 통과하지 못했음을 나타냅니다. AI Code Assurance failed (AI 코드 보증 실패) :
- AI Code Assurance is on (AI 코드 보증 활성화됨) : 프로젝트에 AI 코드 보증을 위한 품질 게이트가 적용되었지만, 아직 상태가 계산되지 않았음을 나타냅니다.
- 프로젝트에 AI 코드 보증이 적용되지 않았음을 나타냅니다. AI Code Assurance is off (AI 코드 보증 비활성화됨) :
외부 AI 코드 보증 배지
프로젝트가 AI 코드 보증 기준을 충족하면, 외부 웹사이트에 표시할 수 있는 AI 코드 보증 배지를 발행할 수 있습니다.
이를 통해 프로젝트의 AI 코드 품질 상태를 외부에 알릴 수 있습니다.
프로젝트 배지 사용 에서 생성 방법 및 자세한 정보를 확인할 수 있습니다.
다음은 각 AI Code Assurance 배지가 의미하는 상태입니다.
- : AI가 생성한 코드에 대한 품질 게이트(quality gate qualified for AI-generated code)를 통과했습니다.
- : AI가 생성한 코드에 대해 품질 게이트를 통과하지 못했습니다.
- : AI가 생성한 코드에 대해 품질 게이트를 사용중이지만, 품질 게이트 상태가 아직 계산되지 않았습니다.
- : AI가 생성한 코드에 대해 품질 게이트가 적용되지 않고 있습니다.