SonaQube 특징
여러 분석 툴을 종합하여 여러 항목들을 한번에 검사한 후 웹페이지에서 분석 결과들을 손쉽게 확인 가능합니다. 또한 각종 플러그인을 이용하여 다양한 기능을 제공합니다. 실행하려면 JDK8 이상, 최소 2기가 이상의 램과 운영체제 실행을 위한 1기가의 여유 램, 분석을 위한 저장공간이 필요합니다.
클라우드 지향형 소나 클라우드, IDA 확장 플러그인 형태인 소나린트도 있어 다양한 품질 문제를 감지하고 수정할 수 있습니다.커뮤니티부터 데이터 센터까지 다양한 에디션으로 구성되어 있고, 그 중 커뮤니티 에디션은 무료로 제공되고, 그 외 에디션은 연간 instance당 코드라인 수로 가격이 책정되고 다양한 기능들이 더 추가되어 있습니다.
SonaQube 구조
소나큐브 플랫폼을 구성하여 4요소에 대해 설명 드리도록 하겠습니다. 첫 번째로 소나큐브 서버는 사용자용 웹서버, 검색서버, 보고서 처리 및 DB 저장용 컴퓨터 엔진으로 구성되고, 소나큐브 데이터베이스는 각종 설정 및 소스품질 스냅샷 용도, 세 번째, 소나큐브 플러그인은 프로그래밍 언어, SCM 연동 관련 플러그인 등을 탑재하고 있으며, 네 번째, 소나큐브 스캐너는 분석 스캐너를 뜻합니다.
소나 큐브 플랫폼과 타 도구 간 연계 통합
첫째, 개발자가 코드 작성 후 소나린트를 사용하여 로컬 분석을 실행합니다. 이 절차에 소나린트는 옵션으로 생략해도 무방합니다. 두 번째, 개발자가 SVN 등 형성관리 시스템으로 코드를 commit 또는 push합니다. 셋째, CI 서버는 자동 build 실행 및 소나큐브 스캐너를 통해 분석을 실행합니다. 넷째, 분석 보고서는 처리를 위해 소나큐브 서버로 전송됩니다. 다섯째, 소나큐브 서버는 분석 보고서 결과를 처리 후 소나큐브 DB에 저장하고 결과를 UI에 표시합니다. 여섯째, 개발자는 소나큐브 UI를 통해 자신의 기술부채를 줄이기 위해 문제의 코드를 검토 후 수정합니다. 일곱째, 관리자는 주기적으로 분석 보고서를 확인하는 순으로 진행될 수 있습니다.
소나큐브 특징
우선 화면의 1번처럼 프로젝트의 소스코드 품질 현황과 관련해 버그, 취약점, 코드스멜, 기술부채 등의 정보를 한눈에 보여주고, 프로젝트 코드가 품질 측면에서 현재 어떤 상황인지를 표시합니다.
코드품질 관리를 위해 강력한 방법인 wateric 패러다임, 즉 수도관의 물이 새는 것을 막는 것처럼 소스 추가/변경 시 새로 발견된 문제들을 제어하여 코드품질을 기계적으로 향상시킵니다.
팀에서 코드 품질관리를 수행하기 위해 조직이 원하는 품질 게이트를 설정 가능하고, 이를 요구사항 충족 기준, 즉 허들로 사용하여 코드 출시 여부를 판단할 수 있습니다.
그래프 형태의 시각화를 사용하여 특정 기간 동안 발생한 이슈, 커버리지, 중복 등 프로젝트 히스토리의 세부사항을 쉽고 정밀하게 추적할 수 있습니다.
프로젝트의 이슈 리스트에서 소스코드 선택 시 해당 이슈의 내용, 상태, 변경시점, 코드 작업자 등을 자세히 분석할 수 있습니다. 이슈 발생 시 이메일을 통해 알림을 받을 수도 있습니다.
악취가 나는 코드를 유지보수 하기가 어렵습니다. 중복코드, 테스트 안 된 코드, 너무 복잡한 코드 등 다양한 종류가 있습니다.
시스템에서 발견할 수 있는 코드의 취약점을 찾아 추적할 수 있습니다. 예를 들어 SQL 인젝션, 하드코딩 된 암호, 잘못된 관리 오류 등이 있습니다.
소나큐브 코드분석기는 강력한 가치를 제공하는 기본 품질 프로파일을 근간으로 대부분의 프로젝트에서 작동합니다. 사용자가 원하는 대로 조정 가능합니다.
20개가 넘는 각 주요 프로그래밍 언어에 대한 코드분석기와 규칙을 제공하고, 여러 프로그래밍 언어를 한번에 사용도 가능합니다.
코드 품질 정보를 위해 자바, C#, C++, Object C와 같은 언어에 대한 build 통합을 지원하며, Bamboo, Jenkins, TeamCity와 같은 다양한 CI 엔진과의 통합을 제공합니다.
관리 책임자는 거버넌스 제품의 일부로 제공되는 직계 대시보드를 사용하여 프로젝트 품질에 대한 큰 그림을 인식하고 리스크를 평가할 수 있습니다. 크게 출시 가능성, 신뢰성, 보안, 유지보수성 등으로 나누어 알 수 있습니다.
주요 소프트웨어 품질 문제인 태스트 커버리지, 소스 복제 등 주의가 필요한 잠재적인 핫스팟을 강조합니다.
'SW > DevOps' 카테고리의 다른 글
DevOps : 리팩토링 개념과 필요성 (0) | 2019.12.11 |
---|---|
DevOps : SonarQube 사용법 (0) | 2019.12.10 |
DevOps : SW 구조 분석 도구 개념 및 종류 (0) | 2019.12.08 |
DevOps : 정적 분석의 이해와 관련 도구 소개 (0) | 2019.12.07 |
DevOps :CI : Docker로 구축하는 방법 (0) | 2019.12.05 |