写点什么

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

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

关注

评论

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

一文带你了解数据库安全基础

坚果

数据库 28天写作 12月日更

整理了一些JPA常用注解

yombo

Java Spring JPA

架构训练营 - 模块三作业

伊静西蒙

腾讯云容器安全获得云安全守卫者计划优秀案例

腾讯安全云鼎实验室

容器安全

Apsara Stack 技术百科|标准化的云时代:一云多芯

云计算 芯片 科技 混合云

How old are you | 尚硅谷大数据之Canal视频教程

编程江湖

大数据 canal

谈谈Golang的同步等待组

恒生LIGHT云社区

golang Go 语言

模块八作业

panxiaochun

架构实战营

爆肝30天,肝出来史上最透彻Spring原理和27道高频面试题总结

Tom弹架构

Java spring 源码

三位一体,网易智企的融合与进击

ToB行业头条

千万级日志回放引擎设计稿

FunTester

性能测试 测试框架 FunTester 流量回放 GOREPLAY

揭秘字节跳动基于Hudi的实时数据湖平台

字节跳动数据平台

大数据 实时数据湖

seata分布式事务AT模式介绍(二)

恒生LIGHT云社区

分布式 分布式事务 seata

用EasyRecovery恢复手残误删的文件

淋雨

EasyRecovery

恒源云(GPUSHARE)_云GPU服务器如何使用SpaCy?

恒源云

gpu 服务器 自然语言

网易有道项目实践技术分享合集

有道技术团队

技术分享 网易有道 技术专题合集

基于Gradle的Spring源码下载及构建技巧

Tom弹架构

Java spring 源码

年底考勤管理汇总难?织信OA管理系统无缝对接外部应用助你解决

优秀

低代码 考勤管理 OA管理系统

Dubbo 框架学习笔记十七

风翱

dubbo 12月日更

一次完整的渗透测试&仅供学习研究

H

黑客 网络安全 渗透测试·

使用Docker Configs存储配置信息

yombo

Docker Docker Swarm

2022 年你必须知道的 Serverless 云产品

开源之巅

Serverless 云开发

域名基本信息查询小技巧

喀拉峻

网络安全 安全 信息安全

社区原生的 Go Agent 即将开源

火线安全

DevSecOps IAST

接口文档自动更改?百度程序员开发效率MAX的秘诀

百度Geek说

百度 前端 工具 后端 软件开发

实现一键部署与高效集群管理,SphereEx-Boot 正式上线

SphereEx

开源 开源社区 SphereEx ShadingSphere 一键安装

人工智能(NLP)|社交网络中的网络表示学习技术研究

索信达控股

人工智能 算法 网络结构

基于DataX的数据同步(下)-应用DataX进行数据同步

恒生LIGHT云社区

数据库 数据同步 DataX

用300行代码手写1个Spring框架,麻雀虽小五脏俱全

Tom弹架构

Java spring 源码

30个类手写Spring核心原理之自定义ORM(下)(7)

Tom弹架构

Java spring 源码

Kubernetes常见组件

Rayzh

Docker Kubernetes 云原生

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