정적소스코드 분석 - SonarQube

소스 코드의 리스크를 분석하여 결함 및 취약점을 시각화 하여 제공하고,
발견된 소스코드 문제를 해결함으로써 소프트웨어 비즈니스의 품질목표를 달성할 수 있도록 지원합니다.

정적소스코드 분석 - SonarQube

정적 분석 이란?

프로그램을 실행하지 않고 소프트웨어를 분석하는 방법으로서, 소스 코드의 결함 및 취약성을 찾기 위한 일련의 프로세스입니다.

지속적이고 빠른 품질 검사

품질에 대한 지속적인 피드백을 확인 가능
시간이 지남에 따라 명확한 품질 향상 그림 제공
품질 결함 생성 시 즉각 알림
개발자의 지속적인 교육과 선순환

개발팀의 품질 관심 확대

품질 수행 계획은 개발 프로세스에 통합되어 개발팀의 관심을 확대
소프트웨어 품질 정보에 실시간 액세스
더 나은 소프트웨어를 개발할 수 있는 능력 확보 가능

품질 프로세스의 오너쉽

코드 품질은 개발 팀의 소유
소프트웨어 품질 도구가 조직 전역에 제공
외부 컨설턴트 없이 즉시 이해 가능

조직 품질 요구사항 확보

품질 판단은 객관적인 기준에 따라 자동화로 이뤄짐
새로운 코드, 변경된 코드, 전체 코드 기반으로 소프트웨어 품질을 측정
새로운 문제의 발생원인을 추적 가능

주요 기능

  • 프로젝트 기반 품질 측정

    • 프로젝트의 홈에서 품질 게이트, 버그, 취약성, 중복코드, 단위 테스팅 정보를 한눈에 보여주며 현재 코드의 품질 측면에서 위치를 확인합니다.
    • 빌드와 통합을 통해 소스 코드 품질의 변화를 즉각적으로 확인할 수 있습니다.
  • Quality Gates

    • 품질 게이트(Quality Gate)를 통해 다양한 조직의 품질 요구사항을 설정할 수 있습니다.
    • 복잡도, 커버리지, 중복, 보안성, 유지보수성, 사이즈, 신뢰성, 이슈 등 다양한 항목에 대한 품질 요구사항을 설정합니다.
  • Quality Profiles

    • SonarQube는 프로젝트 분석 시 사용되는 규칙(Rulesets)을 정의할 수 있습니다.
    • 이 룰셋은 품질 프로파일로 구성되고 조직의 모든 구성원은 프로젝트에 적용되는 규칙을 확인할 수 있습니다.
  • 다중 언어의 Coding Rules

    • SonarQube는 Java, C/C++과 같은 인기있는 20개 이상의 언어의 코딩 룰을 제공합니다.
    • Checkstyle, Clover, Findbugs, PMD 등 다양한 외부 분석기에 대한 플러그인을 지원합니다.

통합 기능

  • Build Systems과 통합

    • 표준 빌드 시스템과 강력하게 통합되어 Zero-Configuration을 제공합니다.
    • Maven, MSBuild, Gradle, ANT와 같은 인기있는 빌드 시스템과 무설정 혹은 약간의 설정으로 프로젝트를 빠르게 스캔할 수 있습니다.
  • CI Engines과 통합

    • 빌드 시스템과 쉬운 통합은 CI 엔진과도 쉽게 통합됨을 의미합니다. Bamboo, Travis CI, Jenkins, AppVeyor, Team Foundation Server, TeamCity와 같은 다양한 CI엔진에서 원클릭 만으로 SonarQube를 연동할 수 있습니다.
  • IDE와 통합

    • 개발자는 자신이 좋아하는 IDE에서 코드 품질에 대한 피드백을 얻을 수 있습니다.
    • SonarLint는 이클립스, Intelli J, 비주얼 스튜디오, 비주얼 스튜디오 코드, Atom과 같은 IDE에서 실시간으로 코드 품질에 대한 피드백을 제공합니다.
  • Web API와 Web Hook

    • SonarQube의 웹 API를 사용하여 SonarQube를 자동적으로 프로비저닝하거나 BI에 원하는 데이터를 제공하거나 모니터링 할 수 있습니다.
    • 표준 웹 훅(Webhook) 메커니즘을 사용하여 채팅방과 같은 외부 시스템에 알림을 수행할 수 있습니다.

분석 언어

SonarQube는 각 에디션 별로 분석 언어가 상이하며, Community Edition은 총 15개의 언어, Developer Edition은 총 22개의 언어, Enterprise Edition은 총 27개의 언어가 지원되며 각 언어는 다음과 같습니다.

서비스 구성

SonarQube는 SonarQube 서버, 데이터베이스, SonarQube 플러그인, SonarQube Scanner 총 4개의 컴포넌트로 구성됩니다.