在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

智慧云助力移动办公,提升效率,降低成本

知者如C

软件测试/测试开发丨Web自动化 PageObject设计模式

测试人

Python 软件测试 自动化测试 测试开发

INFINI Labs 产品更新 | Console 告警中心 UI 全新改版,新增 Dashboard 全屏模式等功能

极限实验室

console INFINI Labs INFINI Console 极限科技

音视频数字化进行时,MediaBox重新定义「高易用」

阿里云CloudImagine

云计算 视频云

容器编排工具的比较:Kubernetes、Docker Swarm、Nomad

树上有只程序猿

Kubernetes Docker Swarm Nomad

【原理篇】Supabase 权限模型 Part1

张文平

Serverless API sdk 权限控制 Supabase

全面 Serverless 化,阿里云微服务引擎 MSE 重磅升级

阿里巴巴云原生

阿里云 Serverless 微服务 云原生

MySQL的Json类型个人用法详解

北桥苏

多元任务,高额奖金!首届“开放原子开源大赛”等你参与!

飞桨PaddlePaddle

人工智能 paddle 百度飞桨

@返校的同学、家长,华为手机用Petal出行打车更高效优惠!

最新动态

AREX Agent 如何实现 Apollo 配置中心 Mock

AREX 中文社区

开源 Java Agent 自动化测试 Apollo 流量录制

软件开发原子化 技术转型加速器

力软低代码开发平台

低代码开发的优势与劣势,看这一篇就够了

互联网工科生

软件开发 低代码

ABAQUS是什么软件?哪里可以学习有限元分析技术?

思茂信息

仿真软件 abaqus 有限元分析 有限元技术 结构仿真

学习CAE软件有什么方法技巧?

智造软件

有限元分析 CAE软件 altair

大模型重塑区域人才培养,飞桨(重庆)人工智能教育创新中心正式启动

飞桨PaddlePaddle

人工智能 百度飞桨

全球十大最佳 NFT:数字资产重新定义所有权

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

CCKS2023:基于企业数仓和大语言模型构建面向场景的智能应用

酷克数据HashData

一个可读性高的代码对程序员有多重要

飞算JavaAI开发助手

活动回顾丨云原生开源开发者沙龙深圳站(含 PPT)

阿里巴巴云原生

阿里云 开源 云原生 消息列队

如何利用FuncGPT告别繁琐的开源代码调试

飞算JavaAI开发助手

AI 软件开发 程序员‘’ 自然语言 Java'

NFTScan 浏览器正式版上线 2 周年!

NFT Research

NFT nft工具

十秒钟搞定全自动jvm参数分析

摸鱼编程

AI 自动化 JVM GC

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