SonarQube 6.7 (LTS) released

이 글은 https://www.sonarsource.com/resources/product-news/news.html#6.7-lts-released 를 번역한 글입니다


드디어 여기까지 왔습니다. SonarQube 의 새로운 LTS(Long Term Support) 버전을 릴리즈하였습니다. 올해의 크리스마스 선물이 되기를 바랍니다 (smile)

 브랜치 분석(branch analysis)와 같은 몇몇 기능들은 commercial edition에서만 사용할 수 있습니다.

 브랜치 분석 | Branch Analysis

아마도 이 버전에서 가장 기대했던 기능은 바로 강력한 브랜치 분석일 것입니다:

오랜 기간동안 개발되는 브랜치들은 master 브랜치로부터 quality profile 및 quality gate, 설정 값은 물론 issue 들을 상속하며, 일반적인 프로젝트와 같은 형태로 표시됩니다:

Feature 브랜치는 새로운 이슈들에 집중합니다:

모든 종류의 브랜치–main 브랜치, 짧은 기간 개발되는 브랜치는 물론 오랜 기간 개발되는 브랜치--분석을 종료한 뒤, webhook을 사용해 새로운 quality gate 상태를 다른 시스템으로 전달할 수 있습니다.

 더 똑똑해진 분석 | Smarter Analysis

SonarQube는 근본적으로 정적 분석 도구입니다. 우리는 SonarQube를 통해 제공한 사용자 경험(user experience)을 매우 자랑스럽게 생각합니다. 하지만 정적 분석 결과가 좋지 않다면, 아무리 UX가 좋다 한들 소용이 없을 것입니다. 우리는 심볼릭 실행(sympolic execution)과 데이트 플로우 분석(data flow analysis)를 사용해 보다 강력한 분석 엔진을 만드는 것에 집중했습니다. 그 결과 오탐(false positive)을 줄이면서 식별하기 어려운 버그들을 식별할 수 있게 되었습니다:

이러한 버그들을 식별하기 위해 수집되는 정보는 분석기에게도 유용하지만, 사용자들이 버그가 발견된 원인을 이해하는 데도 유용합니다. 우리는 코드 경로와 컨텍스트 위치에 신선하고 강력한 표시들을 추가했으며, 사용자는 이를 통해 이슈로 식별된 원인을 보다 잘 이해할 수 있습니다.

"이해(understanding)"의 관점에서, 우리는 인지 복잡도(Cognitive Complexity)라는 개념을 도입해 사용자가 작성한 코드의 이해정도를 측정합니다:

새롭게 도입한 인지 복잡도 규칙은 대부분의 언어에서 사용 가능하며, 인지 복잡도 지표를 활용해 실제로 유지보수가 어려운 메소드를 쉽게 찾아낼 수 있습니다.

또한 LTS 버전에서는 오래전 이슈들이 새로운 이슈로 식별되지 않도록 많은 노력을 기울였습니다. 예를 들어, 파일의 위치를 바꾸거나 이름을 변경할 경우, 이전 버전에서는 해당 파일에서 식별된 모든 이슈를 closed 상태로 변경하고, 새로운 위치의 파일(새로운 이름의 파일)에서 새로운 이슈를 식별한 것으로 처리하였습니다. 이번 LTS 버전부터는 오래된 이슈들은 이러한 상황에서도 해당 이슈들을 신규 이슈로 취급하지 않습니다. 프로파일의 새로운 규칙에 의해 예전 코드에서 발견된 이슈 역시 신규 이슈로 취급하지 않습니다. 즉, 새로운 규칙들이 완전히 새로운 코드에서 식별한 이슈들만을 신규 이슈(new issue)로 표시합니다.

마지막으로, 오랫동안 요청을 받았던 TypeScript 및 T-SQL 언어에 대한 분석기를 추가했으며, 각각 67개 규칙49개 규칙을 제공합니다.

 중요한 것에 집중 | A Focus on What Matters

이슈 및 이슈와 관계된 컨텍스트의 표시 방법의 개선과 함께, 사용자가 중요하게 생각하는 데이터들을 보다 쉽게 찾아낼 수 있도록 큰 개선을 했습니다. 사용자는 프로젝트 레벨 메뉴에서 세 가지 종류의 미리 정의된 그래프는 물론 커스터마이즈 가능한 그래프를 사용할 수 있습니다:

새로운 Measures 페이지에도 강력한 기능이 포함되었습니다. Measures 페이지에서는 파일/디렉토리 단위의 정보들을 직관적인 형태로 제공하며, 이를 활용해 어플리케이션에서 문제가 발생할 수 있는 영역을 보다 정확하게 식별할 수 있습니다:

글로벌 Projects 페이지에서도 비슷한 형태의 그래프를 제공해, 리스크가 높은 프로젝트를 신속하게 식별할 수 있습니다:

강력한 필터 기능, 프로젝트 태깅 기능을 활용해 흥미있는 프로젝트들을 보다 효율적으로 관리할 수 있습니다:

Leak 뷰에서도 동일한 필터를 활용할 수 있습니다:

프로젝트 상위 관점의 새롭게 추가된 포트폴리오(Portfolio) 페이지를 통해, 관심이 있는 프로젝트 포트폴리오를 식별할 수 있습니다:


포트폴리오 타입 중 하나인 어플리케이션(Application)을 활요하면 관심있는 프로젝트들을 그룹화하여 공통의 homepage, issues, measures, quality gate를 사용할 수 있습니다:

더욱 빨라진 글로벌 검색 기능을 통해 원하는 요소에 신속하게 접근할 수 있습니다:

 지속적인 코드 품질 | Continuous Code Quality

올해는 SonarQube의 모든 기능들이 부드럽게 연계되고, 무엇보다 제대로 동작하도록 하는 것에 집중했습니다.

예를 들어, SonarLint 노티피케이션을 통해 프로그래머는 IDE에서 벗어나지 않고 Quality Gate 상태가 변경되거나. 새로운 이슈가 할당되는 경우 즉시 알 수 있습니다:

IDE에서 벗어나는 경우, SSO(Single Sign On) 기능을 통해 다른 신뢰된 시스템에 인증을 위임할 수 있습니다:

백그라운트 태스크를 병렬 수행하도록 함으로써, 백엔드 시스템의 효율성을 보다 높일 수도 있습니다:

 

혹은 5대의 서버를 클러스터로 구성해 가용성을 향상시킬 수도 있습니다(이 부분은 별도로 보여드릴 것이 없습니다. 죄송합니다 ^^; )


여기까지입니다 (smile)

자 이제 새로운 버전을 다운로드 하고 사용해 보시기 바랍니다. 설치 전, SonarQube 설치 및 업그레이드 가이드를 읽는 것도 잊지 마시기 바랍니다.

이미 SonarQube 6.x 버전을 사용하고 계신 경우, 몇몇 가지 기능들은 놀랍지 않을 수도 있습니다. 그러나 이전 LTS 버전을 사용하고 계셨다면, 아마도 안전벨트를 단단히 걸고 이번 LTS 버전을 만나셔야 할 것입니다. 와우!!


© 2017-2018 Moses Kim.

별도의 언급이 없는 한, 이 스페이스의 컨텐츠는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
SONARQUBE는 SonarSource SA의 트레이드 마크입니다. 모든 트레이트 마크 및 저작권은 각 소유자의 소유물입니다.

::: SonarQube 관련 문의 : 이메일 :::