1.背景

在《Jenkins系列——使用checkstyle进行代码规范检查》一文中完成了ant实现代码规范检查的例子。但存在以下缺陷:

  • 每个作业都需要配置一个不同的checkstyle ant脚本,而这个脚本中的多数代码是重复的。
  • 报告采取覆盖方式,而我们有时需要保留一定构建次数的报告。

2.分析

  • 使用变量代替ant脚本中变化的路径,这个变量通过ant命令的 -Dxxx=value 的方式传值。
  • 建立名为${BUILD_NUMBER}的目录,将该次构建成功的报告保留在该目录下。

3.环境

  同《Jenkins系列——使用checkstyle进行代码规范检查》中的环境。

4.验证

4.1 修改checkstyle的ANT脚本

checkstyle脚本如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="checkstyle" default="checkstyle" basedir="."> <!-- 检查源码的路径 -->
<target name="init">
<tstamp/>
<!-- 输出报告的路径 -->
<property name="project.dir" value="${JENKINS_WORKSPACE}\${JOB_NAME}"/>
<property name="project.checkstyle.report.dir" value="${project.dir}\checkstyle_report\${BUILD_NUMBER}"/>
<property name="project.checkstyle.result.name" value="checkstyle-result.xml"/>
<property name="project.checkstyle.report.name" value="checkstyle-report.html"/>
<!-- 检测规则存放路径 -->
<property name="checkstyle.config" value="${CHECKSTYLE_INSTALL}\sun_checks.xml"/>
<property name="checkstyle.report.style" value="${CHECKSTYLE_INSTALL}\contrib\checkstyle-author.xsl"/>
<property name="checkstyle.result" value="${project.checkstyle.report.dir}\${project.checkstyle.result.name}"/>
<property name="checkstyle.report" value="${project.checkstyle.report.dir}\${project.checkstyle.report.name}"/>
<mkdir dir="${project.checkstyle.report.dir}"/>
</target> <taskdef resource="checkstyletask.properties" classpath="${CHECKSTYLE_INSTALL}\checkstyle-5.7-all.jar" />
<target name="checkstyle" depends="init" description="check java code and report." >
<checkstyle config="${checkstyle.config}" failureProperty="checkstyle.failure" failOnViolation="false">
<formatter type="xml" tofile="${checkstyle.result}" />
<fileset dir="${project.dir}" includes="**/*.java" /> <!-- 检查源代码的存放路径 -->
</checkstyle>
<!-- 通过指定的xsl模版文件生成一份html的报告,这里生成的文件用于邮件发送时附加上,另外Jenkins插件也会生成可视化的结果 -->
<style in="${checkstyle.result}" out="${checkstyle.report}" style="${checkstyle.report.style}" />
</target>
</project>

checkstyle-build.xml

4.2 配置job

新建一个job,取名CheckstyleDemo2_CODE,配置如下:

文字版(便于复制):

set ANTFILE_PATH=D:\data\jenkins\etc\checkstyle-build.xml
set JENKINS_WORKSPACE=D:\data\jenkins\workspace
set CHECKSTYLE_INSTALL=D:\data\jenkins\myConf\checkstyle-5.7
ant -f %ANTFILE_PATH% -DJENKINS_WORKSPACE=%JENKINS_WORKSPACE% -DCHECKSTYLE_INSTALL=%CHECKSTYLE_INSTALL% -DBUILD_NUMBER=%BUILD_NUMBER% -DJOB_NAME=%JOB_NAME%

Jenkins 配置

点击构建,得到构建成功的结果:

  

    工作区如下:

  

  可见,改造后的checkstyle运行达到了预期效果。

4.3 通过配置另一个job验证效果(无需改动配置)

  新建一个job,取名CheckstyleDemo3_CODE,直接copy CheckstyleDemo2_CODE,仅需改动SVN源码路径及访问该SVN路径的权限信息。

构建后情况如下: 

 

5.总结

  经过以上的改造,checkstyle 的ANT脚本自始至终只有一份,作业中执行代码规范检查的命令也相同,大大减轻了手工配置可能带来的错误。

Jenkins系列——使用checkstyle进行代码规范检查【升级版】的更多相关文章

  1. Jenkins系列——使用checkstyle进行代码规范检查

    1.目标 通过jenkins使用checkstyle对代码进行规范检查并生成html报告. 构建采用shell. 2.环境 checkstyle5.7(如果是Linux版本选用tar.gz格式) ap ...

  2. Java-idea-Checkstyle自动化代码规范检查

    一.概述 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱 ...

  3. 扩展阿里p3c实现自定义代码规范检查

     前段时间fastjson报出了漏洞,只要打开setAutoType特性就会存在风险,自己测试环境的一个项目被揪出来了-_-!.虽然改动很小,但就是觉得憋屈.fastjson还是挺好的,想着禁用的话太 ...

  4. linux 创建svn版本库,并在svn上配置checkstyle做代码风格检查

    一.创建SVN版本库 1.安装svn服务器 yum install subversion 2.查看版本 svnserve --version 3.建立SVN版本库目录(即你的SVN服务器里面的文件存放 ...

  5. 玩转Eclipse — 自动代码规范检查工具Checkstyle

    大项目都需要小组中的多人共同完成,但是每个人都有自己的编码习惯,甚至很多都是不正确的.那么如何使小组所有开发人员都遵循某些编码规范,以保证项目代码风格的一致性呢?如果硬性地要求每个开发人员在提交代码之 ...

  6. 在intellij中使用checkStyle进行代码规范

    1 编写代码检测规则可以参考阿里和google的规则和checkstyle的官网文档.checkstyle官网地址http://checkstyle.sourceforge.net/ 假设自己的sty ...

  7. Jenkins系列——使用SonarQube进行代码质量检查

    1.目标 之前已经写过一篇关于Jenkins和SonarQube的一篇博客<jenkins集成sonar>,本文在参考前文的基础上,做了详细的补充. 使用SonarQube进行代码质量检查 ...

  8. SwiftLint:代码规范检查工具介绍

    Swift-CodeStyle Checker:SwiftLint 介绍: SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 GitHub's Swift 代码风 ...

  9. IDEA 阿里巴巴代码规范检查插件

    1.问题概要 大家都想写出规范的代码,可规范的标准是什么勒,估计每个人心中的标准都不是完全一致的 在分工合作越来越精细化的时代,我们需要一个最大程度接近公认的规范,这里我们以阿里巴巴的代码规范作为参考 ...

随机推荐

  1. Python判断文件是否存在的三种方法【转】

    转:http://www.cnblogs.com/jhao/p/7243043.html 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先 ...

  2. 自己写的日志框架--linkinLog4j--实现基本的框架功能

    OK,上面一步我们已经知道了日志框架的必要性,然后我们也对比了直接不用日志框架来记录日志的种种弊端.现在我们开始就来一步一步的实现自己的日志框架. 大体的思路如下: 1,实现多种日志级别,通过设值不同 ...

  3. linkin大话设计模式--桥接模式

    linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们 ...

  4. 计算器(Ext)

    <html> <head> <title>计算器</title> <meta charset="UTF-8"> < ...

  5. 图片文档倾斜矫正算法 附完整c代码

    2年前在学习图像算法的时候看到一个文档倾斜矫正的算法. 也就是说能将一些文档图像进行旋转矫正, 当然这个算法一般用于一些文档扫描软件做后处理 或者用于ocr 文字识别做前处理. 相关的关键词: 抗倾斜 ...

  6. 文本与二进制关于\n的问题

    文本文件中: text = open(path, "r");windows中的换行符\n,在文件中windows在存储的时候会将它看成\r\n存储,用r在读取大小时会忽略\r的大小 ...

  7. [DeeplearningAI笔记]ML strategy_1_1正交化/单一数字评估指标

    机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 什么是ML策略 机器学习策略简介 情景模拟 假设你正在训练一个分类器,你的系统已经达到了90%准确 ...

  8. 精通libGDX游戏开发-RPG实战-开发游戏的基本前提

    说起RPG,大概国人是不会陌生的. 这不得不从中国单机游戏市场说起,由于早期软件市场被盗版杀死,顺带的,单机游戏软件作为软件市场的分支,也没赚什么钱,养不活公司纷纷倒闭,只到RPG游戏<仙剑奇侠 ...

  9. CSS中的选择器之类选择器和id选择器

    1.css中的选择器: 1.类选择器,又叫class选择器 2.id选择器 3.html元素选择器(又叫标签选择器) 4.通配符选择器 5.伪类选择器 6.组合选择器(多元素选择器,子元素选择器,后代 ...

  10. ES6知识点大汇总

    1 //1.搭建ES6的开发环境: 2 let a=1; 3 console.log(a); 4 //2.var 声明的是全局变量 全局变量会污染外部的区块 5 //let 局部变量 6 //cons ...