SonarQube Runner를 사용하여 프로젝트 분석하기
다운로드
아래의 SonarQube Runner 페이지에서 다운로드할 수 있습니다.
Installing and Configuring SonarQube Runner
여기에서는 2.4 버전을 다운로드하여 사용했습니다.
설치
다운로드 받은 zip 파일을 원하는 경로를 지정하여 압축을 해제합니다. <설치 디렉토리>/conf/sonar-runner.properties 파일을 열어서 자신의 환경에 맞게 수정합니다. 동일한 PC에 SonarQube를 설치했고 기본 설정을 변경하지 않았으면, sonar.jdbc.* 속성의 주석을 해제하는 정도가 할일의 전부입니다.
저는 SonarQube 서버를 같은 PC에 설치했고 MySQL을 사용하고 있기 때문에 아래과 같이 설정을 완료했습니다.
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#----- PostgreSQL
#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
#----- MySQL
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
#----- Oracle
#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
#----- Microsoft SQLServer
#sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
#----- Global database settings
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
#----- Security (when 'sonar.forceAuthentication' is set to 'true')
#sonar.login=admin
#sonar.password=admin
SONAR_RUNNER_HOME 시스템 환경변수를 만들고 그 값으로 [설치 디렉토리]를 설정합니다.
[설치 디랙토리]\bin 디렉토리(%SONAR_RUNNER_HOME%\bin)를 path에 추가합니다. 이제 SonarQube Runner의 설치가 완료되었습니다.
프로젝트 분석
분석할 프로젝트의 루트 디렉토리에 sonar-project.properties 파일을 생성합니다. 저는 Enyo Framework를 clone 한 후 분석했기 때문에 아래와 같이 내용을 채웠습니다.
source 디렉토리에 분석 할 JavaScript 소스 코드가 있어서 sonar.sources 속성 값으로 지정했으며, SonarQube Update Center에서 JavaScript 플러그인을 설치했습니다.
sonar.projectKey=Enyo
sonar.projectName=Enyo
sonar.projectVersion=2.3
sonar.sources=source
sonar.sourceEncoding=UTF-8
이제 명령 프롬프트를 띄우고 프로젝트 루트 디렉토리로 이동한 후, sonar-runner를 실행합니다(SonarQube 서버는 이미 동작 중이어야 합니다).
D:\dev\repos\enyo>sonar-runner
D:\dev\tool\sonar-runner
SonarQube Runner 2.4
Java 1.7.0_60 Oracle Corporation (32-bit)
Windows 7 6.1 x86
INFO: Runner configuration file: D:\dev\tool\sonar-runner\conf\sonar-runner.properties
INFO: Project configuration file: D:\dev\repos\enyo\sonar-project.properties
INFO: Default locale: "ko_KR", source code encoding: "UTF-8"
INFO: Work directory: D:\dev\repos\enyo\.\.sonar
INFO: SonarQube Server 4.4
16:06:33.508 INFO - Load global settings
16:06:34.063 INFO - User cache: C:\Users\heuser\.sonar\cache
16:06:34.087 INFO - Install plugins
16:06:35.588 INFO - Install JDBC driver
16:06:35.610 INFO - Create JDBC datasource for jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
16:06:36.479 INFO - Initializing Hibernate
16:06:45.716 INFO - Loading technical debt model...
16:06:45.754 INFO - Loading technical debt model done: 37 ms
16:06:45.772 INFO - Load project settings
16:06:45.805 INFO - Apply project exclusions
16:06:46.069 INFO - ------------- Scan Enyo
16:06:46.131 INFO - Load module settings
16:06:51.278 INFO - Loading rules...
16:06:51.470 INFO - Loading rules done: 192 ms
16:06:51.566 INFO - Configure Maven plugins
16:06:51.697 INFO - No quality gate is configured.
16:06:52.256 INFO - Base dir: D:\dev\repos\enyo\.
16:06:52.257 INFO - Working dir: D:\dev\repos\enyo\.\.sonar
16:06:52.259 INFO - Source dirs: D:\dev\repos\enyo\source
16:06:52.262 INFO - Source encoding: UTF-8, default locale: ko_KR
16:06:52.266 INFO - Index files
16:06:54.633 INFO - 120 files indexed
16:06:56.894 INFO - Quality profile for js: Sonar way
16:06:56.939 INFO - JaCoCo report not found.
16:06:56.944 INFO - JaCoCo IT report not found.
16:06:56.947 INFO - JaCoCo reports not found.
16:06:56.984 INFO - Sensor QProfileSensor...
16:06:56.991 INFO - Sensor QProfileSensor done: 7 ms
16:06:56.991 INFO - Sensor JavaScriptSquidSensor...
16:06:57.060 INFO - 120 source files to be analyzed
16:06:59.101 INFO - 120/120 source files analyzed
16:06:59.491 INFO - Sensor JavaScriptSquidSensor done: 2500 ms
16:06:59.491 INFO - Sensor CpdSensor...
16:06:59.492 INFO - SonarBridgeEngine is used for js
16:06:59.498 INFO - Cross-project analysis disabled
16:07:01.143 INFO - Sensor CpdSensor done: 1652 ms
16:07:01.143 INFO - Sensor InitialOpenIssuesSensor...
16:07:01.179 INFO - Sensor InitialOpenIssuesSensor done: 36 ms
16:07:01.179 INFO - Sensor ProjectLinksSensor...
16:07:01.186 INFO - Sensor ProjectLinksSensor done: 7 ms
16:07:01.188 INFO - Sensor VersionEventsSensor...
16:07:01.196 INFO - Sensor VersionEventsSensor done: 8 ms
16:07:01.196 INFO - Sensor FileHashSensor...
16:07:01.203 INFO - Sensor FileHashSensor done: 7 ms
16:07:01.396 INFO - Execute decorators...
16:07:02.346 INFO - Store results in database
16:07:05.655 INFO - ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index/Enyo
16:07:05.706 INFO - Executing post-job class org.sonar.plugins.core.issue.notification.SendIssueNotificationsPostJob
16:07:05.774 INFO - Executing post-job class org.sonar.plugins.core.batch.IndexProjectPostJob
16:07:06.051 INFO - Executing post-job class org.sonar.plugins.dbcleaner.ProjectPurgePostJob
16:07:06.060 INFO - -> Keep one snapshot per day between 2014-07-09 and 2014-08-05
16:07:06.061 INFO - -> Keep one snapshot per week between 2013-08-07 and 2014-07-09
16:07:06.062 INFO - -> Keep one snapshot per month between 2009-08-12 and 2013-08-07
16:07:06.065 INFO - -> Delete data prior to: 2009-08-12
16:07:06.069 INFO - -> Clean Enyo [id=33]
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
Total time: 38.279s
Final Memory: 11M/111M
INFO: ------------------------------------------------------------------------
분석이 정상적으로 완료되면 SonarQube에서 분석결과를 확인할 수 있습니다.
'DevOps' 카테고리의 다른 글
Install knife-solo(knife-solo 설치) (0) | 2014.10.21 |
---|---|
Install Chef on CentOS(Chef 설치) (0) | 2014.10.20 |
SonarQube 설치 및 설정 (2) | 2014.08.05 |
MySQL 5.0.45 원하는 위치에 수동 설치 및 윈도 서비스로 등록 하기 (0) | 2008.02.20 |
HSQLDB 시작하기 (2) | 2007.11.30 |