在最新的《 关于代码审查的几点建议》中再次提到了代码分析:

6、尽量使用静态代码分析工具以提高审查效率。

笔者之前也谈到过多次代码分析、代码检查,见:
关于代码评审的微博讨论汇集 
#敏捷有效实践# 每日代码自动检查 英文是daily code inspection。对代码质量关注时,安排人工检查code review是需要的,但100% code review需要很多工作量,不是所有的组织值得这样做,而工具自动检查是只需少量人工建设配置,99%的组织值得采用。此实践花费不多,收效不小。
#CMMI和敏捷# 共同点:同级互查,Peer Review,也称同行评审,同级互查是CMMI 三级VER过程域的特定实践,要求定义哪些工作产物采用哪种同级互查形式,开展同级互查,并解决发现的问题,并分析结果。而敏捷实践中,针对代码,要么结对编程,要么代码评审(code review),相关要求进入到DoD。
推荐 Effective Code Review with Sonar 详见 http://t.cn/zHFfH8a

代码审查高效组合推荐

最近在自己电脑上更新了SonarQube,来分享下具体做法。
本文先来介绍最简单的做法:利用Jenkins拉取代码不编译只扫描。
1,首先下载最新的SonarQube,参见http://www.sonarqube.org/downloads/    当前最新版是4.4
下载后解压,先不着急启动。不知道为什么,SonarQube4.4没有包括SonarQube最新推荐的规则引擎。
2,在相同下载页,下载SonarQube Runner V2.4,解压。采用全部缺省配置,不必修改。
3,下载SonarQube最新推荐的Java分析引擎,参见http://docs.codehaus.org/display/SONAR/Java+Plugin 。 
    下载最新的Java Plugin V2.4, 然后将其放到  \sonarqube-4.4\extensions\plugins 下, 其中\sonarqube-4.4是SonarQube的安装目录
    如果已经运行过分析,此目录下可能存在 Surefire, JaCoCo, and Squid for Java plugins 以及 findbugs,这些老版本Jar都要移除,即是只留下Java Plugin V2.4。findbugs先移除,在第2篇中会介绍使用最新的Findbugs。 
4,为快速试用,利用SonarQube缺省数据库,到bin目录下选择合适环境目录来启动SonarQube。
5,利用Jenkins的windows batch command来启动sonar,所以对Jenkins版本没有特别要求,当然使用最新版Jenkins是最好的。笔者的Jenkins是V1.556。
6,在Jenkins中创建Job,选择“构建一个自由风格的软件项目”
7,在源码管理中加入源码的位置,笔者使用的是SVN,选择Subersion,输入Repository URL
8,在构建触发器中,笔者选择了Build periodically,输入H H * * *, 意味着每天在Jenkins空闲的时候执行一次
9,在构建部分,选择增加构建步骤,选择Execute Windows batch command, 在命令框中输入 
             SonarQube Runner V2.4安装位置\bin\sonar-runner.bat
10,配置项目,在要分析的源代码根目录(与Repository URL要对应一致)下新建名为 sonar-project.properties 的文件,至少包括如下:
# required metadata ,Keqiang:AgileJerryPomodoro是笔者项目的Key
sonar.projectKey=Keqiang:AgileJerryPomodoro
#AgileJerryPomodoro是笔者项目的名称
sonar.projectName=AgileJerryPomodoro
sonar.projectVersion=0.5.0
# path to source directories (required),从源代码根目录为基准
sonar.sources=src  
11,将sonar-project.properties 加入到SVN。
12,到Jenkins中立即构建 刚刚建立的Job
13,访问 http://localhost:9000  来看看SonarQube的结果
说明1:以上利用了SonarQube的缺省规则集:Sonar way,共115条规则,这是sonarqube多年来积累的精华规则。
SonarQube当前已经明确宣称:“ We highly recommend that you limit your Quality Profiles to from the SonarQube engine 
because we believe they are faster, more accurate (fewer false positives and false negatives), and more usable
 (they have better descriptions, etc)." 
说明2: Squid, Surefire and Jacoco have been rolled into this Java plugin. from Java plugin V2.4
 
以上动作最多1小时就能完成,对于Java,就能得到业界最先进的代码检查结果。
通过结果再来学习干净代码,是事半功倍的做法。

SonarQube4.4+Jenkins进行代码检查实例之一相关推荐

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

    作者:张克强    作者微博:张克强-敏捷307 在 <SonarQube4.4+Jenkins进行代码检查实例之一> 中介绍了不编译只检查的方式. 在<SonarQube4.4+J ...

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

    在 <SonarQube4.4+Jenkins进行代码检查实例之一> 中介绍了不编译只检查的方式. 但是有些代码检查需要使用字节码,比如Findbugs的检查依赖于字节码,实例一中只提取源 ...

  3. jenkins+findbugs+checkstyle+PMD静态代码检查(二)

    可以根据自己的需求选中对应的插件进行配置(不一定非要同时配置三个插件) jenkins:持续集成的工具 fundbugs:检测代码静态错误的插件  例如:定义了没有用到的对象,string类型的比较使 ...

  4. createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查

    在持续集成过程中,针对代码的静态检查一般有两个时间点:一是提交代码的时候.二是提交merge request的时候,如果代码检查不通过,则可以直接拒绝此次代码提交或者合并.下面我们介绍下在常见的dev ...

  5. Jenkins Maven checkstyle findbugs pmd静态代码检查

    公司原来Java和安卓项目都是用Gradle做配置管理,现在其他项目组使用Maven作为配置管理,对Maven研究了之后也可以用Jenkins做集成了,不过经过比较还是觉得Gradle的语法更加简洁. ...

  6. Android Lint代码检查实践

    1. 为啥用Lint 平时开发中我们在提mr的时候都会进行review,但有些问题通过人眼去看很难发现,比如Fragment必须有空参构造函数,因为在内存不足的时候Fragment恢复默认是通过反射调 ...

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

    命名代码检查 根据 <Java 语言规范( 第 3 版 ) > 中第6.8节的要求, Java 程序命名应当符合下列格式的书写规范: 类 ( 或接口 ) : 符合驼式命名法, 首字母大写. ...

  8. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  9. Python新手常见错误汇总|附代码检查清单

    写代码,出错在所难免,关键是如何快速定位错误,解决bug.错误提示,有时候并不能提供有效信息,尤其是编程新手,常常会犯一些低级错误,比如缩进不对,引号缺失,括号不全等,下面是新手常犯的一些代码错误,希 ...

最新文章

  1. python自学平台-Python编程和人工智能平台学习
  2. 世界上有三样东西不能相信(引用)心胸狭窄的男人勿看
  3. .NET Core 2.0 正式发布信息汇总
  4. tomcat6的项目能直接在tomcat7上用吗_极尽人性化的设计: 能“隐形”的笔记本电脑支架...
  5. Gitlab自动触发Jenkins构建项目
  6. R语言编程基础(2)
  7. Python正则表达式练习
  8. 因子分析模型 - Python 做因子分析简直比 SPSS 还简单 - ( Python、SPSS)
  9. UnityMMO资源整合服务器部署
  10. 根据关系图非常简单的求出三种关系闭包(自反闭包、对称闭包、传递闭包)附练习题
  11. hdu3987(最小割最小边数)
  12. 微信开发者工具配置服务器信息,微信开发者中心如何配置
  13. 苹果ANCS协议分析
  14. 焦虑症和植物神经紊乱是同一种疾病吗
  15. {嵌入式}之TQ2440(天嵌)小记
  16. 性能测试到底该怎么做?
  17. Android FrameWork学习(一)Android 7.0系统源码下载\编译
  18. Linux——Ubuntu忘记用户密码的解决及登录root
  19. 利用内网穿透实现无固定IP调试支付回调
  20. LUA 和 JAVA 的区别

热门文章

  1. django弹出对话框_Django实现简单网页弹出警告代码
  2. python 立体图像_OpenCV-Python 立体图像的深度图 | 五十二
  3. ubuntu修改ip地址后如何保存_如何在 Ubuntu 中检查你的 IP 地址 | Linux 中国
  4. android 手机号码去重,第135天:移动端开发经验总结
  5. u盘安装ubuntu_简单实用的ubuntu18.04安装
  6. 字符串中斜杠换行注意事项之-多余空格
  7. 路由器 radius认证获取ip_玩转网络工程师·认证篇
  8. ubtunu查看服务器信息,ubuntu查看服务器地址
  9. php fpm 三个模式_php-fpm运行原理和模式的简单介绍
  10. jenkins查询mysql_jenkins流水线使用mysql数据库