写点什么

使用 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:1811617
用户头像

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

关注

评论

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

图解Kafka的RecordBatch结构

石臻臻的杂货铺

kafka Kafka实战 11月月更

微博系统中”微博评论“的高性能高可用计算架构

小虎

架构训练营

微博评论架构

Johnny

「架构实战营」

从零到一落地接口自动化测试

老张

自动化测试

主成分分析PCA与奇异值分解SVD-高维数据可视化以及参数n_components

烧灯续昼2002

机器学习 算法 降维 sklearn 11月月更

作业-week5-设计微博系统中”微博评论”的高性能高可用计算架构

in9

Python进阶(四十五)走进requests库

No Silver Bullet

Python requests 11月月更

dubbo + zookeeper + spring 分布式系统

石臻臻的杂货铺

spring dubbo 11月月更

架构实战营模块5作业

冷夫冲

架构训练营 架构实战

【愚公系列】2022年11月 微信小程序-app.json配置属性之plugins

愚公搬代码

11月月更

常见用的设计模式以及实战

想要飞的猪

设计模式 spring设计模式

JS模块化—CJS&AMD&CMD&ES6-前端面试知识点查漏补缺

loveX001

JavaScript

CSS学习笔记(八)

lxmoe

CSS 前端 学习笔记 11月月更

在MUI框架中对于事件绑定与取消和监听的触发自定义的深入运用与实战

恒山其若陋兮

mui 11月月更

架构训练营作业5-微博评论的高性能高可用计算架构

许四多

JAVA逻辑运算符

默默的成长

前端 java; 11月月更

「Go易错集锦」意外的变量隐藏

Go学堂

golang 程序员 个人成长 常见错误 隐藏变量

极速下载 docker镜像

蜗牛也是牛

安装 Docker Compose

蜗牛也是牛

易观分析:2022年Q3中国网络零售B2C市场交易规模达21971.5亿元

易观分析

零售 交易

Python进阶(四十六)Python3实现SMTP发送邮件详细教程

No Silver Bullet

发送邮件 SMTP pyhton 11月月更

用户画像分析的应用及搭建

穿过生命散发芬芳

11月月更 用户画像分析

API工具常见分类

阿泽🧸

11月月更 API工具

2022-11-16:给你一个数组 nums,我们可以将它按一个非负整数 k 进行轮调, 例如,数组为 nums = [2,4,1,3,0], 我们按 k = 2 进行轮调后,它将变成 [1,3,0,

福大大架构师每日一题

算法 rust 福大大

[力扣] 剑指 Offer 第二天 - 复杂链表的复制

陈明勇

Go 链表 数据结构与算法 11月月更

js事件循环与macro&micro任务队列-前端面试进阶

loveX001

JavaScript

Python进阶(四十七)python3使用pyinstaller实现将py文件打包成exe文件

No Silver Bullet

Python pyinstaller 11月月更

python数据分析-pandas基础(1)

AIWeker

Python 数据分析 pandas 11月月更

静悄悄“双十一”背后的“喧嚣”

易观分析

双十一 消费 购物

2022 Rebase Hackathon启动

谢锐 | Frozen

区块链 defi 黑客松 web3 layer2

大厂前端面试考什么?

loveX001

JavaScript

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