使用maven构建项目(java项目或者web项目都可以)
jacoco插件的配置参考官方网址:http://www.eclemma.org/jacoco/trunk/doc/maven.html
(1)配置jacoco的依赖jar包
<dependency><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.7.8</version> </dependency>
(2)配置jacoco的插件,以及相关的goal
<plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.7.8</version>
<!--这里的execution ,每一个执行的goal,对应的id必须是唯一的--><executions><execution><id>prepare-agent</id><goals><goal>prepare-agent</goal></goals></execution>
<!--这个check:对代码进行检测,控制项目构建成功还是失败--><execution><id>check</id><goals><goal>check</goal></goals></execution>
<!--这个report:对代码进行检测,然后生成index.html在 target/site/index.html中可以查看检测的详细结果--><execution><id>report</id><phase>prepare-package</phase><goals><goal>report</goal></goals></execution></executions></plugin>
(3)配置代码检查的约束 rules
<!-- Configuration 里面写配置信息 --><configuration><!-- rules里面指定覆盖规则 --><rules><rule implementation="org.jacoco.maven.RuleConfiguration"><element>BUNDLE</element><limits><!-- 指定方法覆盖到80% --><limit implementation="org.jacoco.report.check.Limit"><counter>METHOD</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit><!-- 指定指令覆盖到80% --><limit implementation="org.jacoco.report.check.Limit"><counter>INSTRUCTION</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit><!-- 指定行覆盖到80% --><limit implementation="org.jacoco.report.check.Limit"><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit><!-- 指定类覆盖到100%,不能遗失任何类 --><limit implementation="org.jacoco.report.check.Limit"><counter>CLASS</counter><value>MISSEDCOUNT</value><maximum>0</maximum></limit></limits></rule></rules>
</configuration>
(4)完整的pom.xml的配置如下
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.demo</groupId><artifactId>answers</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>answers</name><url>http://maven.apache.org</url><build><finalName>answers</finalName><plugins><plugin><inherited>true</inherited><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>${compiler.source}</source><target>${compiler.target}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin>
<!--检查代码覆盖率的插件配置--><plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.7.8</version><executions><execution><id>prepare-agent</id><goals><goal>prepare-agent</goal></goals></execution><execution><id>check</id><goals><goal>check</goal></goals></execution><execution><id>report</id><phase>prepare-package</phase><goals><goal>report</goal></goals></execution></executions><!-- Configuration 里面写配置信息 --><configuration><!-- rules里面指定覆盖规则 --><rules><rule implementation="org.jacoco.maven.RuleConfiguration"><element>BUNDLE</element><limits><!-- 指定方法覆盖到80% --><limit implementation="org.jacoco.report.check.Limit"><counter>METHOD</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit><!-- 指定指令覆盖到80% --><limit implementation="org.jacoco.report.check.Limit"><counter>INSTRUCTION</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit><!-- 指定行覆盖到80% --><limit implementation="org.jacoco.report.check.Limit"><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit><!-- 指定类覆盖到100%,不能遗失任何类 --><limit implementation="org.jacoco.report.check.Limit"><counter>CLASS</counter><value>MISSEDCOUNT</value><maximum>0</maximum></limit></limits></rule></rules></configuration></plugin></plugins></build><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><compiler.source>1.7</compiler.source><compiler.target>1.7</compiler.target><junit.version>4.12</junit.version></properties><dependencies><dependency><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.7.8</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency></dependencies> </project>