BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

度量和提高代码质量

| 作者 Ben Linders 关注 20 他的粉丝 ,译者 谢丽 关注 9 他的粉丝 发布于 2016年1月18日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Aigle Practitioners 2016大会上,Boris Modylevsky将做一场关于度量和提高代码质量的演讲。

InfoQ就如下内容对他进行了采访:度量代码质量的重要性及如何使用度量提高代码质量,将静态代码分析工具集成进持续集成过程,测试覆盖率分析和测试自动化,将代码分析工具集成进持续集成过程以及测试覆盖率分析可以带来什么好处。

InfoQ:您能详细介绍下度量代码质量的重要性吗?

Modylevsky:作为软件开发人员,对于我们的软件产品,我们有很多可以说的。它是否可以用于特定的场景,它是否能够在受到某些限制时很好的运行,它是否能够从灾难中恢复过来。所有这些问题都没有回答我们的代码质量多好或多坏的问题。关于代码质量,有许多定义,但通常,人们所说的“高质量代码”是指具备灵活性、可测试性和可读性的代码。如果我们可以评价我们的代码有多好,那么我们就可以更准确地估计后续任务的工作量,或者为了提高代码质量,分配时间,用于减少技术债务。因此,通过度量内部代码质量,我们可以提高外部质量,结果就是提高了软件产品的质量。

InfoQ:关于如何度量代码质量以及如何使用代码度量提高代码质量,您能举例说明一下吗?

Modylevsky:我曾经参加过一个混合了遗留代码和新代码的项目。遗留代码需要重构,而且没有经过单元测试,而新代码是从头开始写的,经过了良好的设计,干净且经过测试。问题是,新代码同遗留代码混在了一起,很难确定哪块代码需要改进。当我们开始度量代码质量时,哪部分代码需要改进就非常清楚和明显了。度量代码质量帮助我们评估技术债务,我们可以分配资源用于重构。

InfoQ:您是如何将静态代码分析集成到持续集成过程和工具的?

Modylevsky:有许多现成的静态代码分析工具,重要的是选择最符合你的需求的工具。目前,我正致力于一个流程解决方案的开发,实现QualiSystems CloudShell和VMWare VCenter的集成。该项目是用Python编写的,托管在Github的一个公共库上。项目链接为https://github.com/QualiSystems/vCenterShell

对于这个特定的项目,我一直在找配置最少,能与Github很好地集成,同时又是作为服务提供的工具。对于静态代码分析,我选择了Code Climate,它可以快速准确地定位一些重复的代码和潜在的Bug。不用说,它的配置非常简单,而且对公共库免费。

InfoQ:关于测试覆盖率分析和测试自动化,您能分享下您在这方面的经验吗?

Modylevsky:通常,代码覆盖率分析用于单元测试时非常有效。它可以识别出一些没有测到的边缘情况,或者找出测试覆盖率不够的大段代码。至于测试自动化,例如,端到端测试,即使有价值,价值也要小一些。代码覆盖率很高的自动化测试也不见得能够做到很好地测试所有的边缘情况。

InfoQ:将代码分析集成进持续集成过程,测试覆盖率分析,您从中获得了什么好处?

Modylevsky:在持续集成过程中进行代码分析和测试覆盖率分析很有价值。首先,它可以显示出每个指标随时间的变化趋势。其次,如果某个指标相对于上一次构建时降低了,那么它可以使构建失败。例如,如果实现了Github与Coveralls.io的良好集成,就可以将代码覆盖率分析配置为合并Pull请求的必备检查。这样,就可以确保持续改进,防止代码质量随着时间下降。

InfoQ:如果人们在寻找改进产品质量的方法,您能给他们提些建议吗?

Modylevsky:将这些工具作为一种游戏展示给开发团队,当这些指标提升时,就可以获得更多的分数。计量分数,并允许开发人员互相竞争。做一个仪表板,展示得分高的人,并显示在公司里的大屏幕上。

让人们为他们的代码自豪!

查看英文原文:Measure and Improve Code Quality


感谢谢丽对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者(已满),InfoQ读者交流群(#2)InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT