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平台中配置-->排除下的说明,以下:

相关文章
相关标签/搜索