서비스소개
정적소스코드 분석 - SonarQube
![](/assets/imgs/marketplace/developer-tools/img-u02-07-t04-v01-02.png)
정적 분석 이란?
프로그램을 실행하지 않고 소프트웨어를 분석하는 방법으로서, 소스 코드의 결함 및 취약성을 찾기 위한 일련의 프로세스입니다.
![](/assets/imgs/marketplace/developer-tools/img-u-7.png)
기대 효과
![](/assets/imgs/marketplace/developer-tools/img-u02-07-t04-v01-03.png)
지속적이고 빠른 품질 검사
품질에 대한 지속적인 피드백을 확인 가능
시간이 지남에 따라 명확한 품질 향상 그림 제공
품질 결함 생성 시 즉각 알림
개발자의 지속적인 교육과 선순환
![](/assets/imgs/marketplace/developer-tools/img-u02-07-t04-v01-04.png)
개발팀의 품질 관심 확대
품질 수행 계획은 개발 프로세스에 통합되어 개발팀의 관심을 확대
소프트웨어 품질 정보에 실시간 액세스
더 나은 소프트웨어를 개발할 수 있는 능력 확보 가능
![](/assets/imgs/marketplace/developer-tools/img-u02-07-t04-v01-05.png)
품질 프로세스의 오너쉽
코드 품질은 개발 팀의 소유
소프트웨어 품질 도구가 조직 전역에 제공
외부 컨설턴트 없이 즉시 이해 가능
![](/assets/imgs/marketplace/developer-tools/img-u02-07-t04-v01-06.png)
조직 품질 요구사항 확보
품질 판단은 객관적인 기준에 따라 자동화로 이뤄짐
새로운 코드, 변경된 코드, 전체 코드 기반으로 소프트웨어 품질을 측정
새로운 문제의 발생원인을 추적 가능
상세 기능
주요 기능
-
프로젝트 기반 품질 측정
- 프로젝트의 홈에서 품질 게이트, 버그, 취약성, 중복코드, 단위 테스팅 정보를 한눈에 보여주며 현재 코드의 품질 측면에서 위치를 확인합니다.
- 빌드와 통합을 통해 소스 코드 품질의 변화를 즉각적으로 확인할 수 있습니다.
-
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개의 언어가 지원되며 각 언어는 다음과 같습니다.
![](/assets/imgs/marketplace/developer-tools/img-u02-07-t04-v01-09.png)
구성도
서비스 구성
SonarQube는 SonarQube 서버, 데이터베이스, SonarQube 플러그인, SonarQube Scanner 총 4개의 컴포넌트로 구성됩니다.
![](/assets/imgs/marketplace/developer-tools/img-u02-07-t04-v01-10.png)