写点什么

度量和提高代码质量

  • 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:006307
用户头像

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

关注

评论

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

一张表就是一个智能业务系统,钉钉全新发布“AI表格”

ToB行业头条

深入拆解MCP架构:手把手搭建智能体通信桥梁

聚客AI学院

MCP MCP协议 mcpserver MCP Server MCP头号玩家

官宣 | Fluss 0.7 发布公告:稳定性与架构升级

Apache Flink

全球研讨会|知识图谱赋能数据平台价值升级

Altair RapidMiner

人工智能 机器学习 AI 数据分析 知识图谱

时序数据库 TDengine × SSRS:自动报表的高性能组合拳

TDengine

tdengine 数据 时序数据库 报表

脑机接口一百年

脑极体

AI

中国商飞与宁德时代战备合作,市场影响深远

科技汇

MyEMS开源能源管理系统核心代码解读012

开源能源管理系统

开源 能源管理 代码解读

AI 英语口语 App 的开发

北京木奇移动技术有限公司

软件外包公司 AI听力 AI英语学习

2026第二届杭州国际人形机器人与机器人技术展览会

AIOTE智博会

机器人展 智能机器人展 人形机器人展

报名开启!AI 助力快速设计仿真技术研讨会(浙江温岭)

Altair RapidMiner

AI 制造业 CAE Inspire Simlab

Claude Code 免费羊毛快薅

白大米

Claude cursor

天下拍“同步拍”模式:让异地竞拍变得触手可及

至存网络

拍卖系统 拍卖软件 艺术品拍卖 资产拍卖 竞拍

MyEMS开源能源管理系统核心代码解读010

开源能源管理系统

开源 代码 能源管理 开源能源管理系统

IT小伙伴要知道的-IT运维堡垒机相关知识

行云管家

堡垒机 IT运维

满血DeepSeek加持的AlphaGPT,助力高文律师事务所全面拥抱AI

科技汇

失明十年后,他在这里找到当大侠的感觉

脑极体

AI

PPT字体替换全攻略!这2个使用技巧办公必备

职场工具箱

人工智能 AI PPT AIGC AI生成PPT

KingbaseES 到 Apache Doris 实时同步实践|国产数据库数据入仓解决方案

tapdata

Tapdata 日志解析 KingbaseES实时同步 Doris数据入仓 国产数据库,数据类型映射

Awesome Mac 精选资源合集

qife122

macos 命令行工具

中国商飞与宁德时代携手,技术创新引领航空新能源

科技汇

京东携手HarmonyOS SDK首发家电AR高精摆放功能

HarmonyOS SDK

HarmonyOS HarmonyOS NEXT HarmonyOS SDK应用服务

解读 OP 治理第八季:看 Superchain 生态下的链间协同与治理

NFT Research

blockchain Web3.0 Optimism

时序数据库技术创新大会:以 IoTDB 为核心,洞见「DB + AI」的工业物联未来

Apache IoTDB

ByteBrain x 清华 VLDB25|时序多模态大语言模型 ChatTS

火山引擎开发者社区

火山引擎

中国商飞与宁德时代跨界,共护投资者权益

科技汇

MyEMS开源能源管理系统核心代码解读011

开源能源管理系统

开源 能源管理

Agentic时代,我们需要什么样的数据工程(一)

MatrixOrigin

原点安全签约广西北部湾银行,实现多场景一体化数据安全平台建设

原点安全

淘宝商品评论API接口全解析:从数据采集到情感分析

tbapi

淘宝商品评论接口 天猫商品评论接口 淘宝API 淘宝商品评论API 天猫商品评论API

LanceDB:AI时代的多模态数据湖

火山引擎开发者社区

火山引擎

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