SonarCloud와 VSTS를 함께 사용해 코드 품질을 향상하세요

이 글은 https://blog.sonarsource.com/integrate-sonarcloud-with-vsts-to-boost-code-quality 를 번역한 글입니다

 

여러분의 개발 조직이 좋은 코드 품질 프랙티스를 활용하기를 원한다면 “누수 수리하기" 접근 방법을 적용하도록 하십시오: 발생 가능한 이슈들을 IDE에서 미리 처리하고, 남은 이슈들은 코드를 머지하기 전에 처리한 뒤, 빌드 과정에서 품질 게이트를 적용해 프로덕션 환경에는 고품질의 코드만을 릴리즈할 수 있습니다. SonarSource는 이러한 접근법을 효과적으로 지원하는 제품들을 개발해왔으며, 이제 Visual Studio Team ServicesSonarCloud를 사용해 모든 개발 단게에서 이러한 기능을 완전하게 사용할 수 있게 되었음을 기쁘게 알려드립니다.

Pull request 분석: 놓치고 있던 바로 그 한 조각

여러분의 개발 조직이 VSTS를 사용하고 있다면, 이미 다음과 같은 제품들을 활용하고 계실지도 모르겠습니다;

  • SonarLint for Visual Studio: 코드 작성과 동시에 이슈를 처리함으로써 팀 공용 저장소에 저품질의 코드가 합쳐지는 상황을 방지

  • SonarCloudVSTS extension: 코드 저장소가 변경될 때마다 전체 코드의 품질을 분석하고, 품질 게이트를 통해 신규 코드의 품질을 통제

feature 브랜치외 pull request를 활용해 개발을 진행한다면, 이제 SonarCloud를 활용해 새로운 feature의 코드를 분석하고, pull request에 코멘트를 활용해 신규 이슈를 하이라이트 하고, 해당 pull request의 상태를 설정함으로써 메인 개발 브랜치에 해당 feature 브랜치가 머지될 가능성을 낮출 수 있습니다.

이 기능을 활용하면 개발 프로세스의 모든 단계에서 품질 피드백 루프를 활용할 수 있게 됩니다: IDE의 작고 빠른 피드백, VSTS pull request의 중간 피드백 마지막으로 SonarCloud에서 전체적인 피드백을 얻을 수 있습니다.

Pull request 분석은 프로젝트 타입에 관계없이 사용할 수 있습니다: .NET 솔루션, Maven 혹은 Gradle 기반의 Java 프로젝트 및 SonarCloud가 인식할 수 있는(현재 17개 언어 지원!!) 코드를 포함한 어떤 저장소에도 활용할 수 있습니다.

VSTS에서 PR 분석을 활성화하기

SonarCloud에 코드 분석을 위한 빌드 정의(build definition) 설정은 모두 마친 상태라고 가정합니다. 표준 .NET 솔루션인 경우, 아래 스크린샷과 같은 상태일 것입니다:

Pull request 분석 활성화 설정은 매우 간단합니다:

  1. “Code(read and write)” 권한을 가진 VSTS 토큰을 생성합니다. SonarCloud에서 PR 분석을 활성화하고자 하고자 하는 프로젝트의 “Administration > General Settings > Pull Requests” 항목에 생성한 토큰값을 입력합니다.

  2. 메인 개발 브랜치(예, “master” 브랜치)의 “Build policies” 페이지에 해당 빌드 정의를 실행하는 빌드 검증 정책(build validation policy)를 추가합니다:

 

이제 몇몇 코드들이 프로젝트의 풀리퀘스트 브랜치에 푸시되면, 빌드 정의에 따라 푸시된 코드들을 스캔한 뒤 SonarCloud에 결과를 전송합니다. SonarCloud는 다음 일을 수행합니다:

  • 이슈가 존재하는 코드에 코멘트를 남깁니다.

  • 풀 리퀘스트를 머지해도 괜찮은지 글로벌 상태를 설정합니다.

코멘트에 추가된 링크나 글로벌 상태를 클릭하면 이슈가 발생한 위치로 이동할 수 있으며, 어떤 부분들이 잘못 되었는지, 어떻게 수정할 것인지 보다 깊이 이해할 수 있습니다.

이슈 머지를 방지하기

풀 리퀘스트를 사용하는 기본적인 목적은 일정한 조건을 만족하지 않는 코드의 머지를 방지하는 것입니다. SonarCloud는 풀 리퀘스트 상태를 설정하며, 이를 활용해 개발자들이 처리되지 않은 이슈가 존재하는 코드들에 대한 풀 리퀘스트를 종료하지 않도록 할 수 있습니다.

개발 메인 브랜치에 아래와 같은 간단한 설정을 추가할 수 있습니다:

위 설정에 따라, 누군가가 품질 게이트를 만족하지 못한 코드를 머지하려고 하는 경우 VSTS가 이를 자동으로 거부합니다: 개발자는 이슈를 수정하거나, 해당 이슈를 기술 부채로 취급할지를 결정해야 합니다(이후 SonarCloud에서 “confirm”으로 처리할 수 있습니다. 품질 게이트를 만족하는 즉시, 이 풀 리퀘스트는 녹색 상태로 변합니다. 아무 걱정할 필요 없습니다: 이 이슈가 크리티컬 이슈라면, 메인 브랜치의 분석을 수행할 때 해당 이슈를 검출할 것이기 때문입니다! VSTS 대시보드에 SonarCloud 위젯을 추가하면, 언제나 이를 확인할 수 있습니다:

자, 다음 스텝은 무엇인가요?

이제 여러분의 프로젝트에 이 기능을 적용하고, 코드를 작성하는 즉시 코드를 깨끗하게 유지하십시오! 더 많은 내용을 알고 싶다면 Microsoft Visual Studio DevOps 사이트에서 제공하는 Hands-On-Lab을 참조하십시오.

저희도 이미 멋진 기능을 구상하고 있습니다: 바로 SonarCloud Gate를 여러분의 릴리즈 파이프라인에 추가하여, 품질 게이트를 만족하지 못하는 코드를 프로덕션에 배포하지 못하도록 하는 것입니다. 많은 관심 부탁드립니다

 

© 2017-2018 Moses Kim.

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

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