SonarQube4.4+Jenkins进行代码检查实例之三-单元測试分析

作者:张克强    作者微博:张克强-敏捷307

在 《SonarQube4.4+Jenkins进行代码检查实例之中的一个》 中介绍了不编译仅仅检查的方式。

在《SonarQube4.4+Jenkins进行代码检查实例之二》中介绍了编译并检查编译结果的方式。

本文来介绍怎样利用SonarQube来分析单元測试。最新推荐在分析插件是Jacoco。

当然要进行单元測试,首先单元測试得到了书写,可以本地运行得到结果。

本演示样例採用Maven的典型结构。

1,配置Maven,在maven的conf文件夹下打开settings.xml,在<profile>下增加Sonar,例如以下

 <!-- sonar -->
    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <!-- FOR Embedded database H2-->
            <sonar.jdbc.url>jdbc:h2:tcp://localhost:9092/sonar</sonar.jdbc.url>
            <sonar.jdbc.driverClassName>org.h2.Driver</sonar.jdbc.driverClassName>
            <sonar.jdbc.username>sonar</sonar.jdbc.username>
            <sonar.jdbc.password>sonar</sonar.jdbc.password>
              <!-- optional URL to server. Default value is http://localhost:9000 -->
            <sonar.host.url>http://127.0.0.1:9000</sonar.host.url>
         </properties>
     </profile>
    <!-- end of sonar -->

2,在Jenkins中配置,前面部分与实例二一样。到了Maven的部分,root POM填写pom.xml

在Goals and options中填写 org.jacoco:jacoco-maven-plugin:prepare-agent clean install

SonarQube和Maven都内嵌支持了Jacoco,所以不必另外安装Jacoco

3,在Jinkins中继续配置Post Step,在Execute Windows batch command中 填入 mvn sonar:sonar

4,以上配置就大功告成了。

当代码在SVN中提交后,仍然在1分钟左右,就能启动以上。

到SonarQube中查看,发如今单元測试部分有例如以下图示:

单元測试的成功情况和覆盖率都有了,不仅如此还有

Insufficient branch coverage by unit tests

SonarQube会提醒哪些文件的单元測试覆盖率还不够。

通过以上。就能监控代码在一个可观察的样子,并能渐渐提高。降低技术债务,得到干净的代码。规避缺陷和异常。

Insufficient branch coverage by unit tests
时间: 2024-11-03 22:43:22

SonarQube4.4+Jenkins进行代码检查实例之三-单元測试分析的相关文章

SonarQube4.4+Jenkins进行代码检查实例之三-单元测试分析

作者:张克强    作者微博:张克强-敏捷307 在 <SonarQube4.4+Jenkins进行代码检查实例之一> 中介绍了不编译只检查的方式. 在<SonarQube4.4+Jenkins进行代码检查实例之二>中介绍了编译并检查编译结果的方式. 本文来介绍如何利用SonarQube来分析单元测试.最新推荐在分析插件是Jacoco. 当然要进行单元测试,首先单元测试得到了书写,能够本地执行得到结果.本示例采用Maven的典型结构. 1,配置Maven,在maven的conf目录

SonarQube4.4+Jenkins进行代码检查实例之二

在 <SonarQube4.4+Jenkins进行代码检查实例之一> 中介绍了不编译只检查的方式. 但是有些代码检查需要使用字节码,比如Findbugs的检查依赖于字节码,实例一中只提取源代码,就不能进行Findbugs的检查. 要进行Findbugs检查就需要编译.以下实例操作来演示如何搭建 1,首先当然是要下载最新的Findbugs    http://docs.codehaus.org/display/SONAR/FindBugs+Plugin  ,当前最新版是V3.0,  suppor

SonarQube4.4+Jenkins进行代码检查实例之一

在最新的<关于代码审查的几点建议>中再次提到了代码分析: 6.尽量使用静态代码分析工具以提高审查效率. 笔者之前也谈到过多次代码分析.代码检查,见: 关于代码评审的微博讨论汇集 #敏捷有效实践# 每日代码自动检查 英文是daily code inspection.对代码质量关注时,安排人工检查code review是需要的,但100% code review需要很多工作量,不是所有的组织值得这样做,而工具自动检查是只需少量人工建设配置,99%的组织值得采用.此实践花费不多,收效不小. #CMM

写可測试的代码

写可測试的代码 不论什么一个软件都是能够測试.在某种意义上,用户的使用过程也就是一个软件測试的过程.但是这并非我们今天要讲的可測试性.我们讲的可測试性指的是代码的可測试性,通俗点儿说就是是一串代码里包括的逻辑是不是能够被单元測试所覆盖.在这篇文章里我会从单元測试的基本概念開始引伸到怎样写单元測试,怎样写可单元測试的代码.文章里全部的样例都是C#写的,一来它是我职业生涯的主力语言.二来C#广为人知,相信对广大职业的或是业余的程序猿来说读懂C#的代码不会是什么特别困难的事情.实际上我描写叙述的方法和

使用vue-cli脚手架搭建项目,保存编译时出现的代码检查错误(ESLint)

一.问题 出现这么写错误是什么原因呢?相信很多小白都会像我一样,第一次接触时有点二丈和尚摸不着头脑.其实是在你用vue-cli脚手架构建项目时用了ESLint代码检查工具,如下图 那么什么是ESLint呢? 二.ESLint介绍(中文官网) 官网是这用介绍的, ESLint 是一个开源的 JavaScript 代码检查工具,由 Nicholas C. Zakas 于2013年6月创建.代码检查是一种静态的分析,常用于寻找有问题的模式或者代码,并且不依赖于具体的编码风格.对大多数编程语言来说都会有

Android自己主动化測试之Monkeyrunner用法及实例

眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monkey主要应用在压力和可靠性測试上,执行该命令能够随机地向目标程序发送各种模拟键盘事件流,而且能够自定义发送的次数,以此观察被測应用程序的稳定性和可靠性,应用起来也比較简单,记住那几个命令即可了.而monkeyrunner呢,相比之下会强大一些,它主要可应用于功能測试,回归測试,而且能够自定义測试扩展,

在idea intellij中使用Sonarqube进行代码检查

Sonarqube是一个功能非常强大的代码质量检查.管理的工具.能够识别多种常用的编程语言,并能够通过设置不同的Rule Sonar是一个代码质量管理的开源工具,它通过插件的形式能够识别常见的多种编程语言(例如Java, C#, PHP, Pythod等)代码质量问题.Sonar可以帮你分析出以下代码质量问题: 1.不遵循代码标准 2.潜在的缺陷 3.代码重复 4.注释率不足或过高 5.糟糕的复杂度分布 6.缺乏单元测试 在公司中,一般是把Sonarqube布置在服务器端,当开发人员提交代码时,

Android 代码检查工具SonarQube

http://blog.csdn.net/rain_butterfly/article/details/42170601 代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一个.官网 Sonar 概述 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD

java 命名代码检查-注解处理器

命名代码检查 根据 <Java 语言规范( 第 3 版 ) > 中第6.8节的要求, Java 程序命名应当符合下列格式的书写规范: 类 ( 或接口 ) : 符合驼式命名法, 首字母大写. 方法 : 符合驼式命名法,首字母小写 字段 : 类或实例变量 : 符合驼式命名法 , 首字母小写 常量 : 要求全部有大写字母或下划线构成, 并且第一个字符不能是下划线. 要通过注解处理器的API 实现一个编译器插件 , 首先需要了解这组 API 的基本知识.我们实现注解处理器的代码需要继承抽象类 java