ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SonarQube 소스코드 정적 품질 분석
    개발 2019. 10. 21. 00:54
    반응형

    1. 소개

    SonarQube는 소스코드의 품질을 지속적으로 측정, 분석하기 위한 오픈소스입니다. 측정항목 별 수준지표, 품질 리스크가 높은 소스 식별뿐만 아니라 소스 코드레벨까지 코드 내용을 확인하면서 이슈 및 문제점을 분석할 수 있습니다. SonarQube 플러그인 설치를 통해 기능이 확장되는 구조이며, 상용 플러긍인 외에도 다양한 무료 오픈소스 플러그인 및  외부 툴 연계 등을 통해 기능 확장을 지원합니다.

     

    참고1: https://www.sonarsource.com/why-us/unique-approach/water-leak/

     

    Fix the Leak!™ | SonarSource

    The approach we recommend to code quality? Manage it as a water leak, fix the leak before you mop the floor!

    www.sonarsource.com

    2. 품질 관리

    부엌바닥에 물 웅덩이가 있는지 찾기 위해 어느 집을 방문했다고 상상해 보십시오. 물 웅덩이가 있습니다. 지켜보는 동안에도 물웅덩이는 천천히 커집니다. 걸레를 찾으십니까? 아니면 원인을 찾아서 고치려고 합니까선택은 분명합니다. 누수의 원인을 찾아야 합니다그렇다면 코드품질을 관리하는 것과 비교를 해보겠습니다. 

    SonarQube로 도입하여 응용 프로그램을 분석하고 기술적인 부채가 많다는 사실을 깨닫게 되면 자동적인 반응은 일반적으로 조치를 시작하거나 조치 계획을 수립하는 것입니다. 이것은 누수의 근원을 무시하면서 하루에 한 번 걸레로 바닥을 털썩 내리는 것과 같습니다. 이런 전통적인 처리접근방식은 주로 릴리스 직전에 주기적인 코드 품질을 측정하고 개발자가 조치를 취하도록 만듭니다. 이 접근법은 단기간에, 특히 강력한 관리 지원을 통해 효과적 일 수 있지만 중장기적인 코드품질관리는 실패하게 됩니다.  그 이유는 다음과 같습니다.

     

    ·       코드 검토가 진행되는 과정이 너무 늦었고 문제를 해결하기 위해 이해 관계자가 관심을 기울이지 않습니다.

            출시가 임박하여 모두가 새로운 버전을 배포하기를 원합니다.

    ·       일반적으로 개발팀은 프로젝트 상황, 제약조건 등을 알지 못하는 외부 인력의 현실성이 떨어지는 가이드를 받아들이기를 거부합니다.

    ·       이 접근법은 누가 코드품질을 소유하고 책임지는지 불분명합니다

    ·       Production 환경으로 가기 전에 전체 애플리케이션을 검토해야 하는데 모든 응용 프로그램에 동일한 기준을 적용 할 수는 없습니다.

            따라서 최종 단계에 발견된 이슈에 대해 각 프로젝트마다 예외를 받기 위한 검토 요청이 발생될 것입니다.

     

    대신 집에서 누수의 근본원인을 조치한 것과 같은 동일한 논리를 코드 품질을 관리하는 방식에 적용 해보십시오. 누수 문제를 해결한다는 것은 "NEW" 코드, 즉 마지막 릴리스 이후에 추가되거나 변경된 코드에 초점을 맞추는 것을 의미 합니다. 그러면 일이 훨씬 쉬워집니다.

     

    ·       코드품질 관리를 위해 설정한 품질 Gate의 상태는 매일 모니터링 될 수 있으며 Pass, Warning, Error 상태 여부를 확인 할 수

           있습니다. 릴리스 시점에 코드품질 문제가 갑자기 나타날 가능성이 없어집니다.

    ·       어제 발생한 이슈를 개발자가 해당 코드가 익숙해져 있는 상태에서 해결 한다는 것은 더 적은 노력으로 실수 없이 코드가 수정될

           가능성이 높다는 것을 의미합니다. 

    ·       코드 품질에 대한 명확한 소유권이 있습니다. 모든 개발자가 관심을 가지고 자신이 만든 코드에 대해 책임감을 가지기 시작합니다.

    ·       go / no-go에 대한 기준은 애플리케이션간에 일관되고 팀간에 공유됩니다. 어떤 응용 프로그램에서 만들어졌는지 관계없이 새로운

           코드는 새로운 코드로 관리됩니다. .

    ·       신규, 변경코드는 개발 프로세스의 일부이기 때문에 개발과정에서 자연스럽게 클린코드가 만들어 질 수 있습니다.

     

    3. 코드품질 관리 방법

    ·       Leak Period(누수 기간) 설정

            프로젝트 별로 설정된 Leak Period기간은 현재 코드와 선택한 특정 지점, 일반적으로 특정일, 이전 버전, 일정 기간 사이의

           코드품질 측정 값의 차이를 보여줍니다.

    ·       Quality Gates 설정

            프로젝트 별로 Quality Gate를 설정하면 코드 품질 측정값에 대한 Threshold 값을 설정하여 관리할 수 있습니다.

            프로젝트 특성에 맞는 차별화된 메트릭을 사용하여 코드 품질이 올바른 방향으로 움직이도록 관리 하십시오.

     

    4. SonarQube의 특징

     소나큐브는 내장된 언어 분석 플러그인과 자체 인스펙션 룰을 이용하여 코드 사이즈, 복잡도, 중복도, 주석 그리고 잠재 버그와 코딩 룰 위반 등에 대한 분석이 가능합니다.

     Unit Test에 대한 정보는 소나큐브가 직접 측정하지 않으며, 언어별 커버리지를 측정하는 오픈소스 프로그램을 실행하도록 구성하고 그 실행 결과를 소나큐브가 가져와서 보여주도록 해야 합니다.

     

    참고2: https://docs.sonarqube.org/latest/user-guide/visualizations/

     

    Visualizations | SonarQube Docs

    Visualizations are available to help you gain deeper insights into your projects' current statuses and histories. The Projects space allows you to filter the projects in your instance by multiple, measure-based criteria. Once you've chosen your set, you do

    docs.sonarqube.org

     

    5. 아키텍처

    SonarQube는 웹서버와 분석, 검색엔진이 내장된 소나큐브 서버와 분석정보를 저장하기 위한 DB, 언어 분석과 다양한 기능 제공을 위한 상용/오픈소스 플러그인, 분석을 위한 Scanner로 구성되어 있습니다.

     

    참고3: https://www.slideshare.net/RomanPickl/continuous-code-quality-with-the-sonar-ecosystem

     

    Continuous Code Quality with the sonar ecosystem

    Continuous Code Quality with the SonarEcosystem SonarQube is the leading platform for static code analysis and Continuous Code Quality. In this talk we will lo…

    www.slideshare.net

     

    반응형
Designed by Tistory.