SonarQube+JaCoCo+Jenkins+Maven配置

說明       

在SonarQube的官網中,發現6.0之後的版本再也不支持cobertura。因此決定嘗試使用JaCoCo來進行單元測試,統計單元測試覆蓋率。下載最新的版本,以下:java

軟件名稱apache

版本app

Jenkinsmaven

Ver.2.60.1單元測試

SonarQube測試

6.4ui

Sonar-Scannerspa

2.8code

Mavenxml

3.3

具體安裝就很少說了。

項目POM配置

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<profiles>
		<profile>
			<id>sonar-coverage</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<pluginManagement>
					<plugins>
						<plugin>
							<groupId>org.jacoco</groupId>
							<artifactId>jacoco-maven-plugin</artifactId>
							<version>0.7.9</version>
							<configuration>
							</configuration>
						</plugin>
					</plugins>
				</pluginManagement>
				<plugins>
					<plugin>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
						<configuration>
							<append>true</append>
						</configuration>
						<executions>
							<execution>
								<id>agent-for-ut</id>
								<goals>
									<goal>prepare-agent</goal>
								</goals>
							</execution>
							<execution>
								<id>agent-for-it</id>
								<goals>
									<goal>prepare-agent-integration</goal>
								</goals>
							</execution>
							<execution>
								<id>jacoco-site</id>
								<phase>verify</phase>
								<goals>
									<goal>report</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

若是不想在項目中添加,在jenkins中配置maven時,添加以下語句,效果同樣

clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true package

Jenkins配置

在maven配置後添加SonarQube Scanner的配置,分析配置以下:

sonar.projectKey=sonar:multipartTest
sonar.projectName=multipartTest
sonar.projectVersion=1.0
sonar.modules=multipart-base,multipart-core
multipart-core.sonar.projectName=multipart-core
multipart-base.sonar.projectName=multipart-base
sonar.sources=src/main/java
sonar.tests=src/test/java
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.java.binaries=target/classes
sonar.java.coveragePlugin=jacoco
sonar.coverage.exclusions=**/entity/**

其中,項目有多個模塊時使用sonar.mudules,若是爲普通項目能夠刪除該部分配置:

sonar.modules=multipart-base,multipart-core
multipart-core.sonar.projectName=multipart-core
multipart-base.sonar.projectName=multipart-base

須要注意如下幾個的配置:

sonar.java.binaries 若是該配置路徑錯誤,則項目的單元測試覆蓋率爲0。以前使用過sonar.binaries配置,結果無效,仍沒有單元測試覆蓋率。

sonar.coverage.exclusions 排除單元測試的文件路徑,配置規則見SonarQube平臺中配置-->排除下的說明,以下:

相關文章
相關標籤/搜索