在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