写点什么

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

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

关注

评论

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

IBM 发布 2024 年第三季度业绩报告:软件业务加速增长,毛利润和现金流增势强劲

财见

HarmonyOS NEXT开发实战:实现高效下拉刷新与上拉加载组件(二)刷新核心逻辑与空页面集成

王二蛋和他的张大花

鸿蒙

3DCAT亮相2024中国国际消费电子博览会,引领AI潮流

3DCAT实时渲染

AIGC解决方案 XR实时云渲染

linux下vsode超级用户运行

百度搜索:蓝易云

解决:Loading class `com.mysql.jdbc.Driver‘. This is deprecated.

百度搜索:蓝易云

远程连接mysql报错“Host xxx is not allowed to connect to this MySQL server“解决办法

百度搜索:蓝易云

从零开始:6个原则打造高效软件开发团队

爱吃小舅的鱼

项目管理 敏捷开发 团队开发

鸿蒙OS开发秘籍:打造优雅的登录状态管理系统

王二蛋和他的张大花

鸿蒙

鸿蒙OS开发秘籍:打造优雅的登录状态管理系统

王二蛋和他的张大花

鸿蒙

鸿蒙OS高级技巧:打造个性化动态Swiper效果

王二蛋和他的张大花

鸿蒙

HarmonyOS NEXT开发实战:打造高效上拉刷新与下拉加载组件(一)空页面的设计与实现

王二蛋和他的张大花

鸿蒙

实时渲染什么意思?实时渲染与一般渲染的区别

3DCAT实时渲染

云渲染 实时渲染 实时云渲染 3D实时渲染

对通用骨架提取方法的改进

地平线开发者

自动驾驶 算法

GSMA最新报告显示,全球移动互联网连接率持续增长

财见

隧道养护设计系统(源码+文档+部署+讲解)

深圳亥时科技

商城小程序(源码+文档+部署+讲解)

深圳亥时科技

苹果电脑可以玩英雄联盟吗?macbook能玩lol?

阿拉灯神丁

游戏 #Mac 苹果电脑 CrossOver Mac下载 CrossOver 24

初学者指南:API 设计的核心步骤与方法

爱吃小舅的鱼

API 设计

C++的异常类型与多级catch匹配

百度搜索:蓝易云

IDM下载器使用教程,idm正版破解永久激活码

阿拉灯神丁

IDM idm下载 下载网站工具

电脑录屏杂音太大怎么办 电脑录屏杂音去除办法有哪些 解决录屏电流声等问题技巧与工具推荐

阿拉灯神丁

Camtasia 录屏软件 视频后期制作 Camtasia Studio2024 视频剪辑工具

万界星空科技PVC地板行业MES系统解决方案

万界星空科技

mes 万界星空科技 塑胶地板行业 地板mes PVC地板行业

鸿蒙OS模块化开发实战:独立路由与解耦策略

王二蛋和他的张大花

鸿蒙

LLMs 入门实战系列大全:LLMs应用、领域大模型介绍、大模型常见面经汇总

汀丶人工智能

《使用Gin框架构建分布式应用》阅读笔记:p212-p233

codists

golang gin 编程人 codists

e&完成对PPF Telecom控股权的收购

财见

机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)

汀丶人工智能

人工智能

Debian使用systemd自动挂载Samba

百度搜索:蓝易云

交互式UI原型设计工具Principle for Mac

Mac相关知识分享

家政管理系统

深圳亥时科技

行业首次达成终端智能化分级定义共识!《终端智能化分级研究报告》发布

财见

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