페이지 트리

이 문서는 2023년 11월 15일 출시된 SonarQube 10.3 릴리즈 노트를 공유하기 위해 작성 되었다.

https://www.sonarsource.com/products/sonarqube/whats-new/sonarqube-10-3/





Clean Code 분류 체계 업데이트

SonarQube 10.3에서 Sonar는 Clean Code 분류 체계를 더 업데이트 하였습니다. 잘못 작성되었거나 잘못된 코드의 결과에 집중하는 것은 복잡하고 혼란을 야기합니다.
대개, 코드의 문제는 여러 가지 또는 중복되는 결과를 초래할 수 있습니다. 그 대신에 소나는 나쁜 코드의 원인이 무엇인지에 여러분의 관심을 돌리고 그것을 예방하도록 돕습니다. 
일관되고, 계획이며, 적응력이 있으며, 책임감이 있는 Clean Code는 코드가 잘못 구성되는 것을 방지합니다. 
소나의 Clean Code 분류 체계는 코드를 최상으로 만들기 위해 최신 기술을 통합한 프레임워크입니다.


모든 CI 플랫폼에 대한 Pull Request에서 단순화된 Clean Code 속성

여러분의 코드가 왜 클린하지 않은지에 대한 이유를 명확하게 설명하기 위해 PR 제품 내 요약 및 PR Decoration은 이제 Clean Code 분류 체계에 따라 단일의 "issues" 상태를 나타냅니다.

이번 릴리즈 이전에는 SonarQube의 Pull Request 제품 내 요약 이슈들과 각 CI(지속적 통합) 플랫폼의 Pull Request Decoration 이슈들은 "reliability", "security", "maintainabillty"의 결과 중심적인 분류에 따라 나열되었습니다.

이 변경 사항은 GitHub, GitLab, Bitbucket 및 Azure DevOps의 모든 CI 플랫폼에서 지원됩니다.

Available in Developer Edition | Enterprise Edition | Data Center Edition


Clean Code 분류 체계 특징에 완전히 영향을 미치는  외부 이슈

10.3 릴리즈에서 API를 통해 불러온 외부 이슈는 소나에 의해 제기된 이슈들과 같은 방식으로 새로운 Clean Code 분류 체계로 분류될수 있습니다. 

이전에 외부 이슈들은 기존 분류만으로 나누어, 새로운 분류에 어떤 외부 이가 들어맞는지 알기 어려웠습니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition

모든 프로젝트 및 모든 이슈에 적용되는 Clean Code 분류 체계 규칙 업데이트

품질 프로파일은 새로운 Code Clean 분류 체계 특징으로 업데이트 되었습니다. 

이제 Sonar가 새로운 Clean Code 분류체계를 업데이트함에 따라, 해당 업데이트는 이러한 변경사항의 지원에 대한 발표된 규칙으로 모든 프로젝트의 모든 이슈에 자동으로 퍼뜨려집니다.

따라서 새롭게 작성된 코드뿐만 아니라, 과거 코드 분석에도 적용될 수 있습니다. 이러한 변경 사항은 여러분에게 새로운 분츄 체계의 완전한 이점을 제공합니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


상위 품질 프로파일로 부터 상속된 규칙 내보내기

품질 프로파일을 상속할 때 원하지 않는 규칙을 상위 품질 프로파일에서 선택적으로 제외할 수 있습니다. 변경 전 SonarQube는 상속된 상위 프로파일로부터 모든 규칙을 사용하도록 요구했습니다. 
만약 상속된 규칙 중 하나 이상의 규칙이 프로젝트 설정 방식과 관련이 없는 경우에는 상위 품질 프로파일을 복사하고 필요 없는 규칙을 제거하는 것이 유일한 해결책이었습니다. 
품질 프로파일을 복사한 결과로 상속의 이점을 잃게 됩니다.
 이 새로운 변경을 통해 상속의 이점이 실현될 수 있습니다.

이제 기본 제공된 "Sonar way" 품질 프로파일을 상속하여 안전하게 사용할 수 있으며, 여러분의 작업 없이도 업데이트를 진행할 때 Sonar에서 최신 및 가장 큰 변경 사항을 계속 얻을 수 있습니다. 
회사는 그들의 팀들이 상속할 때 어떠한 규칙도 제외하는 것을 원하지 않는 경우 이 기능을 비활성화할 수 있습니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition



Clean as You Code 개선 사항

레거시 코드에서 기술 부채를 해결하기 위해 극복할 수 없을것 같아보이는 노력은 비용이 많이 들고 매우 위험한 일이 될 수 있습니다. 

새로운 코드 개발에서 리소스를 끌어내는 대신, Sonar는 새로운 코드로만 여러분의 관심을 돌려 이러한 문제를 해결할 수 있는 유일한 솔루션입니다. 

 Clean as You Code 방법론을 통해 새로 개발된 모든 코드는 깨끗하고 문제가 없습니다. 이러한 접근은 개발 시 새로운 기술 부채가 발생하지 않도록 보장하기 때문에 가장 효과적이기 때문입니다. 

또한 개발자는 새로운 기능을 개발할 때 솔루션의 일부로 레거시 코드에 손을 댑니다.

시간이 지남에 따라 이는 새로운 개발의 결과로 레거시 코드의 점점 더 많은 비율이 정리되고 수정되어 기술 부채가 더욱 감한다는 것을 의미합니다.


Sonar way Quality Gate는 엄격한 Clean as You Code 기준을 채택

Sonar는 내장된 Sonar way Quality Gate에서 제로 이슈를 허용하는 Clean as You Code 기준을 더욱 엄격하게 적용하는 것을 모범 사례로 삼고 있습니다. 

새로운 코드를 작성할 때 엄격한 제로 이슈 정책을 따르지 않으면 일정량의 기술 부채가 지속적으로 코드에 허용됩니다. 

또한 Sonar way Quality Gate는 버그, 취약점 및 코드 냄새를 더 이상 개별적으로 표시하지 않습니다.

새로운 단일 카테고리 "Issues"와 제로 이슈 정책은 함께 SonarSource가 권장하는 새로운 코드 품질 기준을 나타냅니다. 

이러한 변경 사항은 새로 작성되고 수정된 코드가 가능한 최고 수준의 Clean Code 표준을 충족하도록 보장하는 훨씬 더 강력한 프레임워크를 제공합니다.

새로 내장된 Sonar way Quality Gate 및 legacy Sonar way Quality Gate 모두 기본으로 설정되어 있습니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


IDE에서 이슈 열기

SonarLint로 연결모드(Connected Mode)일때, SonarQube에서 이슈 해결을 통하여 작업하여 여러분의 IDE 안에서 이것을 수정하기 위하여 문제의 코드로 빠르게 점프할 수 있습니다.

SonarQube에서 모든 이슈는 클릭하면 IDE에서 SonarLint가 열리고, 이슈의 원인인 코드를 표시하는 버튼이 있습니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


SonarQube에서 외부 이슈 해결

여러분은 이제 외부 이슈의 소스를 제거하기위해 SonarQube를 떠나지 않고도  SonarQube에서 제기된 이슈들처럼 같은곳에서 SonarQube 내부에서 외부 이슈를 해결할 수 있습니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition



더 강화된 SonarQube 보안 기능

SonarQube 10.3 릴리즈를 통해 Sonar는 여러분의 코드가 더욱 깨끗해지도록 보안 기능을 계속 강화하고 있습니다. 

가장 심각한 보안 위협 중 하나는 기업의 개인 데이터, 특히 직원이나 고객의 데이터에 불법으로 접근하는 것입니다.

Sonar는 이제 CI/CD 파이프라인에 기밀이 유입되어 외부로 유출되는 것을 방지하는 가장 철저한 기밀 탐지 기능을 보유하게 되었습니다.

위험을 평가할 수 있도록 새로운 2023 CWE Top 25 보고서를 추가했습니다.

SonarQube는 이제 GitLab 취약점 보고서와 동기화되어 있어 GitLab로 돌아가서 이슈의 상태 변경을 확인할 필요가 없습니다.

아래에 자세하게 설명된 여러 향상된 보안 기능과 함께 Sonar의 가장 고급 도구를 사용하여 코드가 보안 문제에서 깨끗하고 명확하게 유지되도록 할 수 있습니다.


소스에서 기밀 감지

Sonar의 새로운 기밀 감지 엔진은 SonarLint를 사용하여 IDE에서 개발하는 동안 코드에 기밀을 제거하는 데 도움을 줍니다. 

레퍼지토리만 스캔하는 다른 도구와는 다르게, Sonar는 true Shift-left 접근 방식으로 해당 기밀을 원천적으로 제거하며, SonarQube를 통하여 CI/CD 파이프라인에서 기밀을 더욱 보호합니다. 

Sonar는 가장 민감한 기밀/토큰을 포함하는 상위 100가지 이상의 일반적인 패턴을 탐지합니다.

회사 고유 기밀이 누설되지 않도록 보호하고자 하는 경우 Enterprise Edition 및 Data Center Edition에서 회사 고유의 기밀을 탐지할 수 있는 사용자 지정 규칙을 만들 수 있습니다.

Sonar의 Secrets Rule 목록

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


2023 CWE Top 25 Report에 대한 위험 평가

SonarQube의 보안 보고서 페이지에는 이제 CWE Top 25 보고서의 2023 데이터가 포함되어 있으며, 이를 사용하여 위험을 평가할 수 있습니다.

10.3 릴리스를 기준으로 보안 보고서 페이지에는 2023년, 2022년 및 2021년 CWP Top 25 보고서의 데이터가 포함되어 있습니다.

Available in Enterprise Edition | Data Center Edition



SonarQube로 다시 전달되는 Gitlab 취약점 보고서 이슈 상태

10.2 버전에서 Sonar는 이슈를 감지하거나 이슈의 상태를 업데이트할 때 해당 이슈를 GitLab 취약점 보고서로 동기화하는 기능을 추가했습니다.

이 업데이트로 인해 GitHub 취약점 보고서의 이슈 상태 변경이 자동으로 다음 분석에서 SonarQube의 해당 이슈로 복제되어 두 시스템 간의 불일치가 제거됩니다. 

이로써 Sonar와 GitLab 취약점 보고서 간의 이슈 상태가 양방향 자동 동기화가 완료되었습니다.

Available in Developer Edition | Enterprise Edition | Data Center Edition


Docketfiles에 대한 지원 향상

Sonar는 Dockerfile 규칙의 범위를 확장하여 명확하고 일관된 Dockerfile을 만들 수 있도록 도와줍니다.

Dockerfile 지원은 이제 20개 이상의 새로운 규칙을 추가하여 보안 및 기타 Clean Code 속성을 포함합니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


최우선 보안 이슈 요청

SonarQube 10.3 릴리스에는 최우선 보안 향상 요청이 포함되어 있습니다.

  • 에일리어스 추적은 브랜치 생성 중 에일리어스 손실을 방지하기 위해 개선되었습니다.
  • PHP 코드 오염 분석은 전역 변수를 지원함으로써 개선되었습니다.
  • Java, JavaScript, Python 및 C#에서 모든 비교 연산자는 검증기로 간주됩니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition



파이썬에서 지원되는 새로운 데이터 과학 라이브러리

혹시 데이터과학자 또는 머신 러닝 전문가인가요? 그렇다면 Sonar에서 여러분에게 훌륭한 소식이 있습니다.

여러분이 사용하는 주요 파이썬 라이브러리를 지원하는 것에 큰 발전을 이루었습니다.

Sonar는 이미 VS Code에서 Jupyter Notebooks를 지원하고 있으며, NumPy 및 Pandas Python 라이브러리를 지원하기 위한 새로운 규칙을 공개하게 되어 매우 기쁩니다.

향후 릴리스에서는 더 많은 데이터 과학 및 머신 러닝 Python 라이브러리를 지원하기 위해 노력할 예정이니, 기대해 주세요.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


쉬운 온보딩

GitHub 프로젝트를 손쉽고 유연하게 프로비저닝 

GitHub Action을 사용하여 GitHub 프로젝트를 만들고 구성할 때 SonarQube가 처리할 수 있습니다.

GitHub와 SonarQube가 동일하게 구성되어있는지 확인하기위해 GitHub와 SonarQube 간에 수동으로 변경 하던 날 지났습니다.


다음을 수행할 수 있습니다:

  • GitHub에서 분석이 트리거될 때 SonarQube 프로젝트를 자동으로 생성하고 구성하며 다음을 자동으로 채웁니다.
    • PR Decoration
    • 메인 브랜치 이름
  • API를 통해 SonarQube 프로젝트 설정을 완전히 자동화합니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


GitHub 및 SonarQube 간에 팀 동기화

더 복잡한 프로젝트 권한을 가진 회사의 경우, SonarQube를 구성하여 기본 SonarQube 권한 매핑을 덮어쓰고 GitHub에서 사용자, 권한 및 그룹을 자동으로 동기화할 수 있습니다.

더 이상 SonarQube에서 사용자, 권한 및 그룹을 수동으로 구성하고 GitHub의 정보와 정확하게 일치하도록 보장할 필요가 없습니다.

Available in Developer Edition | Enterprise Edition | Data Center Edition



Blazor 프레임워크를 위한 지원

Sonar는 대화형 클라이언트 측 웹 UI를 구축하기 위한 Blazor 프런트엔드 웹 프레임워크를 지원하였습니다.

.NET, C#, HTML, Razor 템플릿 및 SonarQube를 통합하여 깨끗한 코드를 포함하는 풀 스택 웹 앱을 구축할 수 있습니다.

SonarQube에서 Blazor를 지원함으로써 .NET 프로젝트에서 프런트엔드 앱을 구축하기 위한 .cshtml 및 .razor 파일, 그리고 백엔드 애플리케이션을 위한 C#을 분석할 수 있습니다.

요청이 많았던 이 기능은 ASP.NET Core MVC, Razor 및 Blazor 애플리케이션을 깨끗하게 유지하는 데 도움이 될 것입니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


SonarQube 10.3 운용 개선

업그레이드 변경 메시징

새 버전으로 업그레이드하고 새로운 분석에 새로운 규칙이 적용되면 분석 결과에 변화가 있을 것입니다.

영향을 명확히 이해하도록 돕기 위해 각 변경 사항의 세부 내용이 활동 스트림에 나타나며 업그레이드 결과로 어떤 일이 발생했는지 설명합니다.

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition


UI 업데이트

Sonar는 각 릴리스에서 새로운 UI로 페이지를 계속 업데이트할 것입니다.


다음은 10.3 릴리스에서 최신 UI로 업데이트된 페이지입니다:

  • Quality Gate 페이지
  • Rules 페이지
  • Quality Profiles 페이지
  • 프로젝트 온보딩 중에 보이는 DevOps 플랫폼 구성 모달

Available in Community Edition | Developer Edition | Enterprise Edition | Data Center Edition



언어 업데이트

JavaScript/TypeScript:

  • React에 대한 일류 지원으로 60개 이상의 규칙이 추가 
    이에는 다음이 포함되어 있습니다:

    • 흔한 나쁜 관행 방지 (새로운 규칙 17개)
    • 사용 중단된 API 식별 (새로운 규칙 5개)
    • 접근성 향상 (새로운 규칙 20개)
  • 메모리 문제의 진단이 개선


Java/Kotlin:

  • Maven 4.0 지원
  • 모든 외부 린터 분석 도구를 최신 규칙으로 새롭게 갱신
  • Jakarta namespace에 대한 지원 추가
  • Spring Boot의 가장 흔한 함정을 지원 추가


C/C++

  • 새로운 MISRA C++ 2023 규칙 추가


.NET 

  • LTS .NET 8 및 C#12에 대한 지원
  • ASP.NET 및 Blazor 앱에서 사용할 수 있는 Razor 구문을 포함한 .NET 템플릿에서 C# 코드를 지원하도록 추가


Python:

  • Python 3.12의 새로운 구문, 새로운 규칙 및 오류 없는 구문 분석을 지원
  • 데이터 과학자들이 주로 사용하는 주요 라이브러리에 대한 규칙이 추가
    • NumPy
    • Pandas


  • 레이블 없음