写点什么

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

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

关注

评论

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

发布60分钟!霸榜Github的阿里面试参考指南,啃透涨薪10k

Java架构师迁哥

中原银行分布式批处理调度平台介绍

中原银行

分布式 批处理 中原银行

实时数据引擎系列(五): 关于 SQL Server 与 SQL Server CDC

tapdata

Flutter IM跨端架构设计和实现

OpenIM

阿里P8手抄本惨遭泄露,并出现病毒式传播,致28人斩获大厂offer

Java架构师迁哥

一位年薪 180 万的字节大佬扔给我的四份学习笔记

Java架构师迁哥

足足541页!费了大力气才从GitHub上扒下的阿里Java优化“圣经”

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

GitHub星标70K阿里大佬手写的Spring Boot实战手册

Java架构师迁哥

Filecoin算力矿池挖矿系统开发案例

薇電13242772558

区块链 IPFS

一文揭示,DevOps与企业数字化究竟有何联系?

飞算JavaAI开发助手

DevOps 自动化 软件工程

云备份和恢复的优缺点

云计算

真香!霸榜掘金首页第一,阿里内部Java性能调优笔记终于开源了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

“京东商城”亿级高并发秒杀系统到底是怎么设计的?自己做该如何下手?

Java架构师迁哥

openGauss X ShardingSphere,分布式方案的另一种最佳实践

SphereEx

数据库 开源

2021全球高性能云计算创新大赛,9月15日重磅启动!

亚马逊云科技 (Amazon Web Services)

云计算

JavaScript进阶(二)上

Augus

JavaScript 9月日更

开源即巅峰!阿里首次分享:Java架构师全栈“成长笔记”

Java架构师迁哥

牛客网论坛最具争议的Java面试成神笔记,看过的人都已经成功进入大厂

Java 编程 程序员 架构 面试

探秘 JavaScript 世界的神秘数字 1.7976931348623157e+308

清秋

JavaScript 大前端 浮点数 引航计划 IEEE754

网络攻防学习笔记 Day137

穿过生命散发芬芳

网络基础 9月日更

如何获取系统错误报告--Bug Report

Changing Lin

9月日更

北鲲云超算平台为何能够被高性能计算行业认可?

北鲲云

32岁的我裸辞了,八年Java老鸟,只因薪水被应届生倒挂,在闭关三个月后拿到阿里Offer,定级P7!

Java架构师迁哥

由于太全被各大厂要求Github连夜下架

Java架构师迁哥

诧异!GitHub上竟有阿里专家用800页笔记,只讲MySQL调优而且火了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Vue进阶(幺幺贰):package-lock.json 文件解析

No Silver Bullet

Vue 9月日更

如何高效学习 Kubernetes 知识图谱?

阿里巴巴云原生

Kubernetes 容器 云原生

炸了!阿里又一力作上传GitHub,Spring Cloud Alibaba差距不止一点

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

The Data Way Vol.4|开源是创造软件诸多方法中最好的一种形式

SphereEx

数据库 开源

网络协议之NAT穿透原理

Linux服务器开发

网络协议 p2p NAT Linux服务器开发 网络穿透

GitHub获120w+star的JDK源码剖析手册,竟出自Alibaba高管之手?

Java 程序员 架构 面试 Alibaba

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