写点什么

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

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

关注

评论

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

Java 并发基础(五):面试实战之多线程顺序打印

看山

Java并发

css

赫鲁小夫

4月日更

企业上云一张网,华为将在分析师大会上亮出哪些大招?

脑极体

「 最佳内容公布」—— InfoQ 写作平台【 1 周年盛典 】

InfoQ写作社区官方

1 周年盛典 热门活动

浪潮签约“数字基建”合作伙伴共促工业互联网创新发展

工业互联网

MySQL多表查询详解

若尘

MySQL 查询

陪伴

小天同学

陪伴 育儿 个人感悟 4月日更

AI数据科学认证-2021年的最佳选择 John 易筋 ARTS 打卡 Week 44

John(易筋)

ARTS 打卡计划

猫鼠游戏,一个刷票老千看在线投票项目的防范与取舍

ucsheep

安全 在线投票 防作弊 刷票

嘉云公司研发效能平台实践

小江

研发效能 CI/CD

Seldon 使用 (二):打包模型

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

「 优秀主题征文名单公布 」—— InfoQ 写作平台【 1 周年盛典 】

InfoQ写作社区官方

1 周年盛典 热门活动

重读《重构2》

顿晓

重构 4月日更

TIOBE榜单四月已出:上古语言Fortran重回前20?

Bob

编程语言、 4月日更 Tiobe

最详细的基于 Prometheus 的 Azure 指标监控

耳东@Erdong

azure Prometheus 4月日更

Android中的图像格式

如浴春风

android 音视频 安卓 签约计划

「架构师训练营 4 期」大作业一&二

凯迪

架构师训练营 4 期

浅析LSM-Tree存储模型

正向成长

LSM树 KV存储引擎

微服务网关方案:Kong & Nacos

程序员架构进阶

架构 微服务 API网关 28天写作 4月日更

更简的并发代码,更强的并发控制

万俊峰Kevin

并发 go-zero Go 语言

「架构师训练营 4 期」大作业二

凯迪

架构师训练营 4 期

架构师训练营 4 期 大作业

引花眠

架构师训练营 4 期

WebRTC基础知识详解

IT酷盖

签约计划

taskwarrior ,一款提升效率的命令行的 TODO list 工具

Red

效率工具 TODO linux操作

初入江湖,IT从业者应该如何选择?

云峰

对前端趋势的一些理解

葱小白

大前端

模块二作业

c

架构实战营

AI数学基础之:确定图灵机和非确定图灵机

程序那些事

人工智能 AI 程序那些事 图灵机

从石器时代到田园牧歌:如何对 API 统一建模

李宇飞

API

Python变量作用域与LEGB规则

大奎

语法 Python Monad 作用域

Spark原理与实战之部署模式与运行机制

小舰

spark Spark调优 4月日更

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