解析新致开发云如何持续实现代码review
文/徐瑱 邓雷 在传统IT项目开发过程中,团队最害怕的便是在交付前的集成测试阶段突然发现bug而导致项目延迟甚至项目失败。而如今,凭借先进的持续集成技术,我们可以在开发过程中及时判断开发趋势,发现开发漏洞并做出有效的判断。每天进行多次集成,每次集成通过自动化的构建进行验证,从而尽早发现集成错误,极大程度地保证了项目开发的进程与质量。在下文中,我们将详细讨论如何通过SonarQube代码质量管理系统以及Jenkins工具实现自动化持续集成。 开发团队的协作中不可避免的存在以下问题: 1. 新手。项目组的实习生由于初来乍到对于软件开发经验不足,而项目在人手又不够的情况下直接将新人拉入正式环境工作,为项目埋下不规范代码的隐患。 2. 人员流动。老员工维护的模块可能不易于新员工的维护,由于工作交接不到位、水平层次和编码习惯不同的原因造成低质量代码的出现。 3. 代码规范意识薄弱或者疏忽。有些开发人员可能没有接受过专门的质量培训,或者在编码时疏忽了一些规则,随意编写不规范的代码。 以上问题会导致项目的维护效率低下,代码交接变得困难,有潜在的性性能和安全问题等等。因此,代码质量审查是现代开发团队必不可少的过程。 如何解决: 代码复查(Code Review)是很不错的一个解决方案,即让项目Leader或者有经验的员工专门对成员的代码进行复查。但是代码复查的人力代价太大,试想将项目有经验的员工拉取做代码复查,开发进度势必会受到影响,而且软件项目通常是庞大的,其工作量可想而知。因此,在人工之外,我们讨论一种利用机器的自动化代码审查工具SonarQube。 SonarQube利刃: SonarQube为代码的质量管理提供了一个平台,对传统的静态检测如PMD和findBugs等工具进行整合,并且提供了丰富而强大的插件,以适用于各种语言的代码质量分析。 支持的语言:Java, C/C++, Objective-C, C#, PHP, Flex, Groovy, Javascript, Python, PL/SQL, COBol等。 支持安卓代码审查 审查重复代码,代码标准,单元测试,测试覆盖率,代码复杂度,潜在的bug,多余的注释,代码设计和结构等,提供多方面的报告。 记录评审历史,提供多种视图的评估报告图表。 提供完全的自动化分析:可以和Maven,Ant,Gradle整合,也可以整合持续集成工具,如Jenkins。 可以使用插件扩展 通过实现SQALE(基于软件生命周期的质量评定)来评估技术债务。 (图1.SonarQube分析结果概览) 但是SonarQube的配置和部署相对而言依旧繁琐,为了进一步解放人力,我们使用Jenkins将SonarQube的分析过程封装起来,达到代码质量审查阶段的持续集成。 Jenkins指挥中心: Jenkins是一款优秀的开源持续集成工具,可以实现代码的编译,测试,部署,监控等各种工作的自动化执行。也有各种各样的插件可以供开发人员封装使用。 Jenkins为软件开发提供了持续集成的服务。支持主流的代码管理工具如CVS,Subversion,Git等。可以构建Ant,Maven项目,执行任意的shell脚本和windows批处理。 Jenkins的构建可以通过多种方式触发: 版本控制系统中的一次代码提交 设置cron表达式以定时执行 当其它项目构建时触发 通过请求一个特定的URL 协同作战 作战目标: 配置Jenkins,拉取(pull)项目代码到Jenkins服务器,指挥Maven执行构建和单元测试。完成后指挥SonarQube质量分析,SonarQube会将分析结果上传至Sonar服务器,此间我们要编写脚本获取该分析结果的URL,将Jenkins的所有构建测试分析结果email给代码所有者和项目Leader。 实战开始: 在Jenkins服务器上安装Git,Maven,SonarQuber Scanner等软件,并配置好。 配置SonarQube的路径和用户名密码。 安装Jenkins的Git插件,SonarQube插件 创建一个任务,配置任务的Git地址,分支信息等,点击Add post-build step按钮选择InvokeStandalone SonarQube Analysis,对于Maven项目来说,默认支持sonar分析,所以直接构建即可,但是其它项目需要配置Analysis Properties。具体配置可以参考官方资料。 在控制台中我们可以看到项目被构建,执行单元测试,执行Sonar分析。执行顺利的话会得到EXECUTION SUCCESS的提示,并贴出Sonar的链接地址。 使用脚本,处理控制台信息并发送邮件。 立即构建,搞定!静静等待邮箱的邮件就行了。 后续 看到这里,读者们是不是发现Jenkins的部署和配置相对而言依旧繁琐呢?如何再一次解放人力,将Jenkins的部署和配置完全自动化呢?通过编写脚本,结合使用Puppet我们甚至可以实现自己的Jenkins和SonarQube集群,一键部署一键配置。以后的文章再详细讨论。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |