写点什么

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

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

关注

评论

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

Java面试通关:阿里内部实战模拟面试精讲题库,竟被上传GitHub!

Java你猿哥

Java 数据库 微服务 Spring Boot java面试

硬核!阿里最新出品架构核心场景实战手册,解决99%的架构问题

Java你猿哥

疯狂 SQL 转换系列-SQL for Milvus

数由科技

sql Milvus moql

开源赋能 普惠未来 | 软通动力寄语2023开放原子全球开源峰会

开放原子开源基金会

快来答题!看看你是开源几级选手?

开放原子开源基金会

【开发点滴】在vscode的python调试中,如何让调试程序以sudo方式运行?

无人之路

Python vscode ChatGPT

Java 是如何毁掉你的编程思维的?

Java你猿哥

Java 程序员 ssm

开源赋能 普惠未来|深开鸿寄语2023开放原子全球开源峰会

开放原子开源基金会

极氪汽车引入瓴羊Quick BI,数据可视化助力企业数字转型

小偏执o

MySQL好玩新特性:离线模式

GreatSQL

MySQL greatsql greatsql社区

瓴羊Quick BI、帆软横向对比,国内商业BI工具崛起

巷子

《 Istio 权威指南 》新著重磅发行!华为云云原生团队匠心力作

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

构建自己的思维逻辑体系

老张

逻辑思维 如何解决问题

mac上哪款系统仪表板好用?实用软件推荐~

真大的脸盆

Mac Mac 软件 系统监测 仪表盘工具

Java 8 之后的新特性都是鸡肋吗?

Java你猿哥

Java ssm API Java 8 java 8 的新特性

智慧园区移动应用发展面临瓶颈,如何解决?

没有用户名丶

官宣 | 基金会LOGO全新升级 !

开放原子开源基金会

GPT时代,我们应该怎么办?| 社区征文

AIWeker

AI GPT 三周年征文

如何使用Go语言实现面向对象编程中的封装、继承和多态

Jack

从 yield 开始入门协程

乌龟哥哥

三周年连更

DevOps|AGI : 智能时代研发效能平台新引擎(上)

laofo

DevOps 研发效能 AGI AIGC 平台工程

Java Web实战 | JDBC案例:实现图书管理

TiAmo

JDBC DAO JavaBean

GreatSQL社区月报 | 2023.04

GreatSQL

greatsql社区

开发中关于HTTPS不得不规避的2个大坑

北桥苏

https TCP/IP ssl

RPA技术简介

IT蜗壳-Tango

三周年连更

阿里云李钟:弹性计算控制系统团队的提效之路

云布道师

阿里云 弹性计算

智能化生产应用搭建的实战案例

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 5 月 PK 榜

Nginx 安装配置

芯动大师

nginx web 容器 三周年连更

“数字裂变”宇宙,华为云与和伙伴组成“银河护卫队”

脑极体

华为云

2023-05-11:给你一个 m x n 的二进制矩阵 grid, 每个格子要么为 0 (空)要么为 1 (被占据), 给你邮票的尺寸为 stampHeight x stampWidth。 我们想将

福大大架构师每日一题

Go 算法 rust

音视频八股文(11)-- ffmpeg 音频重采样

福大大架构师每日一题

音视频 ffmpeg

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