写点什么

使用 Hudson 和 FindBugs 进行持续集成和代码检查

  • 2007-12-18
  • 本文字数:1038 字

    阅读完需:约 3 分钟

最近在 IBM developerWorks 发表的一篇文章中谈到了如何使用开源工具将构建过程中的持续集成(Continuous Integration,CI)和代码检查这两项任务自动化。它描述了如何安装和配置 Hudson ——一款由 java.net 社区开发的 CI 服务器,一旦检测到源码发生变化时,它就会从 Subversion 代码仓库中获取最新代码,并运行 Ant 构建脚本。

作者 Andrew Glover 将如下三项作为了典型 CI 环境设置的主要组件: - 一个使用构建工具(如 Apache Ant)的自动化构建过程。

  • CVS 或 Subversion 之类的源码仓库。
  • CI 服务器,如 Hudson。

Andrew 用了一个 java 应用为例,讲述了如何在 Hudson 服务器上配置 java 项目,从而运行自动化构建。他还展示了如何通过 Hudson 的插件扩展将类似于 FindBugs PMD 的代码分析和软件检查工具进行集成。

在 文章中,作者阐述了如何使用 Hudson 来捕获构建过程的执行时间和测试结果所反映的趋势。在每一次构建中,CI 服务器都会对 JUnit 结果的 XML 文件 进行解析,并生成一个趋势图,用于展示在相邻的两次构建之间,增加了多少个测试。同时,它还可显示出测试是否通过(蓝图表示通过,红图表示失败)。通过 PMD 或者 FindBugs 发现的代码冲突或是缺陷,都会在每一次构建后被记录下来,以供历史分析。 还可以为 Hudson 配置一个 SMTP 服务器,从而在构建失败时向整个项目团队发送邮件提醒。它还支持使用 RSS 作为提醒机制,开发团队可以通过 RSS feeds 来订阅项目的构建状态页面。

Hudson 同时支持 JUnit TestNG 这两种测试框架。它还可以与其它 SCM 工具(如 CVS, ClearCase Accurev )和构建工具(如 Maven Gant )进行集成。在 Hudson 网站上列出了所有的插件,我们可以看到,它可以和众多的开源或是商业的 SCM、代码覆盖和问题跟踪工具进行集成。

在 developerWorks 上的另外一篇有关 CI 话题的文章中,Paul Duvall 向读者展示了在建立 CI 环境时的一些最佳实践,并指出如何避免一些错误做法(他把它们称之为 CI 反模式)。这些最佳实践是:

  • 开发者应该频繁提交小段代码,而不是等上很长时间以后,一次性的提交很多变化;
  • 当构建失败时,CI 服务器应该立刻通知项目团队;
  • 应当使用类似 E-mail 或者 RSS 之类的反馈机制来与项目团队报告构建状态;
  • 构建状态反馈应该简洁,只应该包括与构建相关的信息;
  • 构建服务器应该有足够的硬件配置,从而进行更快的构建;
  • 项目团队应遵循“管道式构建”的原则来异步执行那些需要较长时间才能运行完的构建过程。

查看英文原文 Continuous Integration and Code Inspection with Hudson and FindBugs

2007-12-18 00:1811926
用户头像

发布了 197 篇内容, 共 63.3 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
发现更多内容

Rust从0到1-枚举-定义

rust 枚举 Option

智慧公安情指勤系统搭建,指挥调度平台解决方

13828808769

智慧公安

升级版数字人民币试点在深启动 这次有啥不一样?

CECBC

数字人民币

Linux 下的Zabbix Agent 安装

耳东@Erdong

Linux zabbix 4月日更

Spark的动态资源分配

小舰

Spark调优 4月日更

「MySQL」深入理解事务的来龙去脉

学Java关注我

Java 编程 架构 程序人生 软件架构

升级JDK到1.8笔记

风翱

jdk8 4月日更

《分布式系统设计》(2) 关键概念和基本问题

陈皓07

Java流(Stream)操作实例-筛选、映射、查找匹配

Java小咖秀

Java stream java8 日常开发

用吃解决生活问题

石云升

读书笔记 好好吃饭 28天写作 4月日更

区块链商品防伪溯源平台搭建,实现数据信息安全共享

13828808769

区块链 商品溯源 #区块链#

计算机原理学习笔记 Day4

穿过生命散发芬芳

计算机原理 4月日更

读scss/sass实例项目带你入门

devpoint

SASS scss css预处理器

余额宝|三年开发|一二三四+HR面面经,已拿offer|

Java架构师迁哥

微服务中台技术解析之项目环境隔离

小江

kafka 架构 DevOps 后端

无脑用 react 的 useCallback

sadhu

React Hooks 无脑 useCallback

什么是跨职能合作的关键?

王辉

团队管理 技术管理 沟通

InheritableThreadLocal源码解析,子线程如何获取父线程的本地变量?

徐同学呀

ThreadLocal Java源码

树莓派安装pytorch

IT蜗壳-Tango

4月日更

三分钟热度的你,不会得到你想要的结果

小天同学

坚持 日常感悟 4月日更 专心 个人思考

Spring 类型转换

邱学喆

Converter spring类型转换 GenericConversionService GenericConverter ResolvableType

区块链电子证照平台搭建,助推政务数字化发展

13828808769

电子存证 区块链+ #区块链#

爽面数码打底浆说明书

C13713145387

爽面数码打底浆 哑面数码打底浆 数码打底浆

完美的,从不空口说白话,140个案例带你深入理解微服务

Java架构师迁哥

Python模拟MOBA手游(三)

Bob

Python Python 游戏编程 4月日更

神秘又强大的@SpringBootApplication注解

vivo互联网技术

Java 后端 springboot 注解分析

《分布式系统设计》(1) 从程序思维到系统思维

陈皓07

JVM-技术专题-MAT解析OOM问题

码界西柚

JVM

Coinbase上市在即,这里有你想知道的一切

CECBC

比特币

真假敏捷教练

escray

面试 面经 4月日更

Python OpenCV 图像处理之图像直方图,取经之旅第 25 天

梦想橡皮擦

Python OpenCV 4月日更

使用Hudson和FindBugs进行持续集成和代码检查_Java_Srini Penchikala_InfoQ精选文章