[SonarQube] SonarQube의 기본제공 버젼보다 하위버젼 분석방법
[SonarQube] SonarQube의 기본제공 버젼보다 하위버젼 분석방법
[Jenkins] Sonar에서 기본 지원되는 JDK보다 하위 버젼 분석 방법
SonarQube의 9.x
버젼부터는 기본적으로 JDK 1.8
의 코드를 분석할 수가 없다.
분석을 위해서는 컴파일된 코드를 JDK 11
버젼 이상에서 분석해야 되는데 Jenkins의 PipeLine을 통해서 JDK 1.8
프로젝트에 대해서 Jenkins로 분석하는 방법
Maven 플러그인 정보
Properties에 Sonar 분석 정보 정의
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<sonar.projectKey>project-key</sonar.projectKey>
<sonar.projectName>Project Name</sonar.projectName>
<sonar.host.url>https://sonarqube.hubtree-tools.com:5443</sonar.host.url>
<sonar.tags>DEMO,CSFW</sonar.tags>
<sonar.login>소나에서 생성한 TokenKey</sonar.login>
<sonar.sources>src/main</sonar.sources>
<sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>
<sonar.java.source>1.8</sonar.java.source>
<sonar.java.target>1.8</sonar.java.target>
<sonar.java.binaries>target/classes</sonar.java.binaries>
<sonar.exclusions>file:**/*.xml</sonar.exclusions>
<sonar.exclusions>file:**/views/**/*</sonar.exclusions>
<sonar.exclusions>file:**/webapp/assets/**/*</sonar.exclusions>
플러그인 선언
1
2
3
4
5
6
7
<!-- Sonar Scanner -->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.9.1.2184</version>
</plugin>
<!--// Sonar Scanner -->
플러그인 실행 명령어
1
$ mvn sonar:sonar
Jenkins PipeLine
- 환경변수로 JDK1.8과 JDK11을 미리 선언
- 빌드할때는 JDK1.8을 JAVA_HOME 환경변수로 설정
- SonarQube 분석을 위해서는 JDK11을 JAVA_HOME 환경변수로 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
pipeline{
agent any
tools{
maven 'MAVEN 3.6.2'
}
stages{
stage('SetUp'){
steps{
script{
env.JDK8_HOME = tool name: 'OpenJDK 1.8', type: 'jdk'
env.JDK11_HOME = tool name: 'OpenJDK 11', type: 'jdk'
}
}
}
stage('JDK 1.8 Build'){
steps{
script{
env.JAVA_HOME = env.JDK8_HOME
env.PATH = "${env.JAVA_HOME}/bin:%{env.PATH}"
}
sh '''
java - version
mvn clean package -U
'''
}
}
stage('JDK 11 SonarQube'){
steps{
script{
env.JAVA_HOME = env.JDK11_HOME
env.PATH = "${env.JAVA_HOME}/bin:%{env.PATH}"
}
sh '''
java - version
mvn sonar:sonar
'''
}
}
}
}
This post is licensed under CC BY 4.0 by the author.