Jenkins+sonar+jcoco+ivy做代码覆盖率
首先,研发写的代码里要有单元测试相关的桩内容。
1.需要下载可用的jacoco.jar包配置到build.xml中
2.jenkins配置:
sonar.projectKey=${JOB_NAME}
sonar.projectName=$JOB_NAME
sonar.projectVersion=$SVN_REVISION
sonar.sources=.
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.dynamicAnalysis=reuseReports
sonar.core.codeCoveragePlugin=jacoco
sonar.surefire.reportsPath=${WORKSPACE}/billtrunk/target/junit
sonar.java.binaries=${WORKSPACE}/billtrunk/bin/classes
sonar.jacoco.reportPath=${WORKSPACE}/billtrunk/target/sonar/jacoco.exec
sonar.junit.reportPaths=${WORKSPACE}/billtrunk/target/junit
sonar.jacoco.itReportPath=${WORKSPACE}/billtrunk/target/ITCoverageReport/jacocoIT.exec
3.build.xml样本
<?xml version="1.0" encoding="UTF-8"?>
<project name="Simple Java Project analyzed with the Sonar Ant Task" default="all" basedir="." xmlns:jacoco="antlib:org.jacoco.ant" xmlns:sonar="antlib:org.sonar.ant" xmlns:ivy="antlib:org.apache.ivy.ant">
<!-- ========= Define the main properties of this project ========= -->
<property name="src.dir" value="src" />
<property name="build.dir" value="bin" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="lib.dir" value="${build.dir}/lib/"/>
<property name="reports.junit.xml.dir" value="${basedir}/target/junit"/>
<property name="sonar.coverage.lib" value="/opt/lib_coverage"/>
<property name="ivysettings.dir" value="/opt/ivysettings"/>
<property name="jacoco.dir" value="${basedir}/target/sonar"/>
<property name="reports.ITCoverageReport.exec" value="${basedir}/target/ITCoverageReport"/>
<property name="reports.ITCoverageReport.dir" value="${reports.ITCoverageReport.exec}/report"/>
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
<pathelement path="${classes.dir}"/>
</path>
<ivy:settings file="${ivysettings.dir}/ivysettings.xml" />
<target name="resolve" description="--> parse ivy.xml">
<ivy:resolve file="ivy.xml" conf="*" />
<ivy:retrieve pattern="${lib.dir}/[artifact].[ext]"/>
</target>
<target name="clean">
<delete dir="${build.dir}" />
<delete dir="${jacoco.dir}"/>
</target>
<target name="init">
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${reports.junit.xml.dir}" />
<mkdir dir="${jacoco.dir}" />
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${classes.dir}" source="1.7" target="1.7" debug="true"
deprecation="false" optimize="false" failonerror="true" >
<compilerarg line="-encoding UTF-8"/>
<classpath refid="project.classpath"></classpath>
</javac>
<copy todir="${classes.dir}" overwrite="true">
<fileset dir="${src.dir}/main/java/">
<exclude name="**/*.java"/>
</fileset>
<fileset dir="${src.dir}/test/java/">
<exclude name="**/*.java"/>
</fileset>
<fileset dir="${src.dir}/main/resources/">
<exclude name="**/*.java"/>
</fileset>
<fileset dir="${src.dir}/test/resources/">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="test" depends="compile">
<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
<classpath>
<path refid="project.classpath"/>
</classpath>
</taskdef>
<!-- Import the JaCoCo Ant Task -->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<!-- Update the following line, or put the "jacocoant.jar" file in your "$HOME/.ant/lib" folder -->
<classpath path="${sonar.coverage.lib}/jacocoant0.7.9.jar" />
</taskdef>
<!-- Run your unit tests, adding the JaCoCo agent -->
<jacoco:coverage destfile="${jacoco.dir}/jacoco.exec">
<junit fork="on" forkmode="once" printsummary="on" showoutput="true">
<formatter type="xml" usefile="true"/>
<classpath>
<path refid="project.classpath"/>
</classpath>
<batchtest todir="${reports.junit.xml.dir}">
<fileset dir="${classes.dir}">
<include name="test/**/*Test.class" />
</fileset>
</batchtest>
</junit>
</jacoco:coverage>
<junitreport todir="${reports.junit.xml.dir}">
<fileset dir="${reports.junit.xml.dir}">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${reports.junit.xml.dir}" />
</junitreport>
<jacoco:report>
<executiondata>
<file file="${jacoco.dir}/jacoco.exec" />
</executiondata>
<structure name="ma project coverage report">
<classfiles>
<fileset dir="${classes.dir}" />
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${src.dir}" />
</sourcefiles>
</structure>
<html destdir="${basedir}/target/report" />
<csv destfile="${basedir}/target/report/report.csv" />
<xml destfile="${basedir}/target/report/report.xml" />
</jacoco:report>
</target>
<target name="it coverage" depends="test">
<jacoco:dump address="192.168.126.7" reset="true" destfile="${reports.ITCoverageReport.exec}/jacocoIT.exec" port="8080" append="true">
</jacoco:dump>
</target>
<target name="it coverage report" depends="it coverage">
<delete dir="${reports.ITCoverageReport.dir}" />
<mkdir dir="${reports.ITCoverageReport.dir}" />
<jacoco:report>
<executiondata>
<file file="${reports.ITCoverageReport.exec}/jacocoIT.exec" />
</executiondata>
<structure name="integration test coverage rate report">
<group name="Check Order Related">
<classfiles>
<fileset dir="${classes.dir}" />
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${basedir}/src" />
</sourcefiles>
</group>
</structure>
<html footer="baby-console it coverage report" destdir="${reports.ITCoverageReport.dir}" />
<csv destfile="${reports.ITCoverageReport.dir}/coverage-report.csv" />
<xml destfile="${reports.ITCoverageReport.dir}/coverage-report.xml" />
</jacoco:report>
</target>
<!-- ========= The main target "all" ========= -->
<target name="all" depends="clean,resolve,compile,it coverage report" />
</project>
4.单元测试要显示在sonarqube中,需要在web端配置
5.可以在设计,链接中加入详情
可以tomcat的conf/server.xml中配置链接 <host>标签内加上访问url
<Context path="/coverage" docBase="/opt/jenkins/workspace/UNIT_TEST_srpbase-common/billtrunk/target/report" debug="0" privileged="true">
</Context>
<Context path="/junit" docBase="/opt/jenkins/workspace/UNIT_TEST_srpbase-common/billtrunk/target/junit" debug="0" privileged="true">
</Context>
---------------------
原文:https://blog.csdn.net/aaf02002/article/details/81507410
版权声明:本文为博主原创文章,转载请附上博文链接!
Jenkins+sonar+jcoco+ivy做代码覆盖率的更多相关文章
- Jenkins+Sonar 项目构建前代码审查
一.sonar简介 1.概述 Sonar (SonarQube)是一个开源平台,用于持续检查代码质量,不只是一个质量数据报告工具,更是代码质量管理平台. 支持Java, C#, C/C++, PL/S ...
- 使用Cobertura做代码覆盖率测试
经验总结:首先要把cobertura.jar包含ant的classpath路径中,其次要求它包含在测试用例的classpath中: 使用cobertura做代码覆盖率测试中出现的问题:覆盖率始终为0, ...
- Jenkins+Sonar质量门禁【实践篇-maven版】
Jenkins+Sonar质量门禁[实践篇-maven版] 配置文档百度挺多的,就不展开来了 首先很遗憾的告诉大家,maven版做不了质量门禁!只能扫描!!! 就我们公司项目里,jenkins ...
- jenkins + sonar 安装配置
最近把snoar 添加上了 [root@snoar data]# wget https://sonarsource.bintray.com/Distribution/sonarqube/sonar ...
- Jenkins+Sonar搭建持续集成和代码质量检查环境
Jenkins+Sonar搭建 一.相关环境及下载地址 系统:Ubuntu JDK:1.8 MySQL:5.7 软件包: jenkins_2.121.3_all.deb sonarqube-7.3.z ...
- jenkins+sonar发送结果邮件的状态问题修复
在我的这篇博文中:使用jenkins+sonar进行代码扫描,并发送自定义邮件 邮件的配置为默认的$PROJECT_DEFAULT_SUBJECT 所以发送的邮件标题中的状态是jenkins构建的状态 ...
- Jenkins+Sonar集成对代码进行持续检测
介绍 SonarQube(曾用名Sonar(声纳)[1])是一个开源的代码质量管理系统. 特征 支持超过25种编程语言[2]:Java.C/C++.C#.PHP.Flex.Groovy.JavaScr ...
- Jenkins Sonar
sonar简介 SonarQube是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题.同时,它提供了丰富的插件,支持多种语言的检测, 如 Java.Python ...
- jenkins使用jacoco插件检测代码覆盖率(八)
代码覆盖率:类覆盖,方法覆盖,行覆盖,指令覆盖……(简而言之,就是判断有没有被执行) 覆盖率 = 已经执行的代码 / 总代码 (1)创建maven项目,配置pom.xml如下 pom.xml < ...
随机推荐
- python 读写.tar.gz文件 -- UnicodeDecodeError
在用pip install 安装库的时候,偶尔会出现编码错误(如:UnicodeDecodeError: 'gbk' codec can't decode byte),对此我们可先将包下载下来(一般为 ...
- day75_10_22频率认证和jwt
一.频率认证原理. 1.从dispatch中获取配置,找到setting中的配置. 2.从thtoyyling中寻找到各个认证类. 3.所有认证类都继承自basethrottle,basethrott ...
- 用java写爬虫
今天学了怎么用java代码获取要爬取页面的源代码,因为只写了一点,所以接下来会陆续跟新此文章 首先,看一下我写的代码 这就是爬取下来的网页源代码,第一张图刚刚补注释有个注释写错了,别误导你们就行,接下 ...
- R-时空可视化
Robert J. Hijmans37 开发了 raster 包用于网格空间数据的读.写.操作.分析和建模,同时维护了空间数据分析的网站 https://www.rspatial.org Edzer ...
- mybatis中<include>标签的作用
MyBatis中sql标签定义SQL片段,include标签引用,可以复用SQL片段 sql标签中id属性对应include标签中的refid属性.通过include标签将sql片段和原sql片段进行 ...
- node爬虫之图片下载
背景:针对一些想换头像的玩家,而又不知道用什么头像的,作为一名代码爱好者,能用程序解决的,就不用程序来换头像,说干就干,然后就整理了一下. 效果图 环境配置 安装node环境 node -v node ...
- 【2019.8.7 慈溪模拟赛 T2】环上随机点(ran)(自然算法)
简单声明 我是蒟蒻不会推式子... 所以我用的是乱搞做法... 大自然的选择 这里我用的乱搞做法被闪指导赐名为"自然算法",对于这种输入信息很少的概率题一般都很适用. 比如此题,对 ...
- 使用system V实现读者写者问题
#include <stdio.h> #include <sys/sem.h> #include <sys/ipc.h> #include <string.h ...
- jvm 性能调优工具之 jmap
概述 命令jmap是一个多功能的命令.它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息.查看 ClassLoader 的信息以及 finalizer 队列. jmap ...
- 探索ASP.Net Core 3.0系列六:ASP.NET Core 3.0新特性启动信息中的结构化日志
前言:在本文中,我将聊聊在ASP.NET Core 3.0中细小的变化——启动时记录消息的方式进行小的更改. 现在,ASP.NET Core不再将消息直接记录到控制台,而是正确使用了logging 基 ...