SonarQube

myplace 2014. 9. 6. 09:42

Jenkins CI Server 설정 중 알게된 Sonar에 대해 소개하려 한다.
Sonar는 소스를 분석하고 결함을 찾아주어 사용자에게 제공한다. 또한 다양한 플러그인을 통해 여러언어, 여러가지 분석 툴을 제공한다. 일부는 Jenkins와도 겹치는 분석이 있으나 하나의 툴로 여러가지 분석(LOC, DupCode, Static Code Analysis, cycle 등)을 제공한다는 점에서 편리하다 생각된다.
나는 Jenkins는 자동화된 build를 통한 CI를 유지하는 목적으로, SonarQube는 소스코드에대한 다양한 분석결과를 파악하는 용도로 사용하고있다.


SonarQube

SonarQube에 대한 자세한 설명은 다음의 홈페이지에서 잘 나와있다. (http://www.sonarqube.org/)
Sonar 분석을 사용하기 위해서는 먼저 2개의 tool이 필수로 설치되어야 한다. 설치를 위해서는 Download  페이지를 방문하면 된다.

 * SonarQube
   : Sonar 분석결과를 저장하고 사용자에게 노출한다. 확장된 플러그인을 통해 다양한 언어 및 타 tool의 분석결과를 SonarQube 상에서 지원한다.
 * Sonar-runner
   : Sonar 분석을 위한 도구로 maven, ant, command line, jenkins 등 다양한 환경에서 소스를 분석한다. Sonar-runner는 command line을 기본으로 지원하며 이 외의 방법으로 build를 위해서는 추가설정 및 라이브러리가 필요하다.
 * SonarQube Maven Plugin, SonarQube Ant Task
   : Maven, Ant 의 build를 위해 필요한 jar, document 를 제공한다.
 * Jenkins Sonar Plugin
   : Jenkins에서 제공하는 Sonar 분석을 지원하는 Plugin이다. SonarQube, Sonar-runner에 대한 설정을 [Jenkins관리 > 시스템설정]에 추가하고, [프로젝트 설정]에서 [build 후 step]에 Sonar를 추가하면 Maven 추가설정 없이 Maven을 통한 Sonar 분석이 수행된다.


Sonar Analysis

Sonar는 기본적으로 Java에 대한 분석을 제공하고있으며, 이외의 다양한 언어에 대해 함께 분석하려면 다음의 조건이 만족되어야 한다.
 - parameter에 sonar.language 값이 없어야 함.
 - SonarQube Update Center에서 다른 언어(CSS, C, Python 등)에 대한 Plugin 설치

SonarQube Update Center는 SonarQube 로그인(초기 계정/PW : admin/admin) 후 [settings] 를 통해 접근이 가능하다.
Update Center에서 설치하고자 하는 플러그인 선택 후 SonarQube를 재시작하면 선택한 플러그인 적용이 가능하다.
이외에도 settings 페이지를 통해 analysis exclude, rule, access 권한 설정 등 다양한 설정을 할 수 있다.


QnA

1. Web Project 분석을 위해 Web Plugin을 설치했는데 분석결과에 html만 표시되고 jsp에 대한 분석이 나오지 않는다?
 => [SonarQube > Settings > General Settings > Web Category] 에서 file suffixes값이 ".html,.xhtml,.rhtml,.shtm"이 기본값으로 설정되어있으므로 지원하는 확장자 중 원하는 파일 확장자를 ,(comma) 구분자를 통해 나열하면 해당파일에 대한 분석된 결과를 볼 수 있다.


SonarQube 참고자료 : 
홈페이지http://www.sonarqube.org/
Download
http://www.sonarqube.org/downloads/
Analysis Setting
http://docs.codehaus.org/display/SONAR/Analyzing+Source+Code
Analysis Parameter : http://docs.codehaus.org/display/SONAR/Analysis+Parameters
Plugin matrix
http://docs.codehaus.org/display/SONAR/Plugin+version+matrix
                 (matching 되는 버전이 아닌경우 SonarQube 서버 실행시 오류 발생함)


Posted by dreamhopp
,