写点什么

度量和提高代码质量

  • 2016-01-17
  • 本文字数:1586 字

    阅读完需:约 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 读者交流群(#2))。

2016-01-17 18:005602
用户头像

发布了 1008 篇内容, 共 373.6 次阅读, 收获喜欢 340 次。

关注

评论

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

软件测试 | 测试环境搭建

测吧(北京)科技有限公司

测试

设计原则 — O 开放封闭原则

Lemoon Can

设计原则 开放封闭原则

Relocating the Docker root directory

平凡人生

Docker

ChatGPT真的可以取代基础工作岗位吗?

老张

人工智能 产业发展 ChatGPT

Higress + Nacos 微服务网关最佳实践

阿里巴巴云原生

阿里云 云原生 nacos Higress

软件测试 | 常用测试策略与测试手段

测吧(北京)科技有限公司

测试

软件测试 | Bug的定位方法

测吧(北京)科技有限公司

测试

文件同步是什么?解析6个最佳的文件同步应用软件

镭速

现货合约量化交易系统开发机器人策略

薇電13242772558

量化

基于图的下一代入侵检测系统

NebulaGraph

图数据库 安全检测 入侵检测

云原生微服务应用平台 EDAS 2022 年度报告

阿里巴巴云原生

阿里云 微服务 云原生

软件测试 | 软件缺陷分为哪几种

测吧(北京)科技有限公司

测试

解读 Java 云原生实践中的内存问题

阿里巴巴云原生

Java 阿里云 云原生

第四届OpenI/O启智开发者大会即将在深圳启动

OpenI启智社区

人工智能 开源 开发者大会 OpenI启智社区

软件测试 | JavaScript如何使用

测吧(北京)科技有限公司

测试

软件测试 | web端常见bug解析

测吧(北京)科技有限公司

测试

CleanMyMac X2023电脑最新版本更新内容

茶色酒

CleanMyMac X CleanMyMac X2023

Nacos 配置管理最佳实践

阿里巴巴云原生

阿里云 开源 云原生 nacos

SpringBoot动态配置文件及项目打包部署

微枫Micromaple

maven Profile springboot 部署 项目上线

ONES 支持多项信创适配,打造自主可控的国产化平台

万事ONES

渲染速度慢,使用云渲染会快多少?

Renderbus瑞云渲染农场

云渲染 渲染慢怎么办?

腾讯连续四次上榜福布斯2023全球区块链50强

科技热闻

API Explorer 进阶之路 | 一篇文章快速入门!

华为云PaaS服务小智

为什么在容器中 1 号进程挂不上 arthas?

阿里巴巴云原生

Java 阿里云 容器 云原生

推进行业生态发展完善,中国信通院第八批RPA评测工作正式启动

王吉伟频道

RPA 机器人流程自动化 中国信通院 RPA评测 RPA产业推进方阵

RocketMQ 集成生态再升级:轻松构建云上数据管道

阿里巴巴云原生

阿里云 RocketMQ 云原生

大数据学习培训机构该怎么选择

小谷哥

软件测试 | 什么是CSS

测吧(北京)科技有限公司

测试

软件测试 | 什么是HTML?

测吧(北京)科技有限公司

测试

突破边界:“超融合+”带来的商业化精益之路

脑极体

docker setup mysql

平凡人生

MySQL

度量和提高代码质量_DevOps & 平台工程_Ben Linders_InfoQ精选文章