写点什么

度量和提高代码质量

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

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

关注

评论

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

为什么Nop平台坚持使用XML而不是JSON或者YAML

canonical

json xml 低代码 Nop平台

C++的对象与类的含义

芯动大师

使用 Terraform 与事件驱动的 Amazon CodeBuild 提升云上数据应用运维效率

亚马逊云科技 (Amazon Web Services)

云原生

媲美ps的图像编辑推荐 Pixelmator Pro 直装激活中文版

胖墩儿不胖y

图像编辑 编辑图像 图像处理工具

学习 ChatGPT 一切基础知识的绝佳资源

3D建模设计

人工智能 ChatGPT LLM

如何使用LLM实现文本自动生成视频

3D建模设计

Python 人工智能

近期大型攻防演练观感及未来攻防趋势判断

墨菲安全

安全 软件供应链

从来不懂K8s的人在10分钟内将应用跑在了K8s中

北京好雨科技有限公司

Kubernetes 开发者 云原生 应用部署

领域驱动设计(DDD):从基础代码探讨高内聚低耦合的演进

付威

架构 领域驱动设计 DDD

ARTS打卡第一周

苏籍

技术 ARTS 打卡计划 #成长经验

【ARTS】Week 1

小小

ARTS 打卡计划

企业级私有化部署即时通讯,完美替代SaaS平台

WorkPlus

2023 ARTS打卡第一周

犇犇

ARTS 打卡计划

GPT大语言模型引爆强化学习与语言生成模型的热潮、带你了解RLHF。

汀丶人工智能

强化学习 ChatGPT AI大语言模型

ARTS打卡Week1

JimDeng

ARTS 打卡计划 go modules

ARTS 打卡第 12 天

自由

ARTS 打卡计划

LangChain + Streamlit + Llama:将对话式AI引入本地机器

3D建模设计

人工智能 LLM

2023 ARTS 打卡第一周

Z.

ARTS 打卡计划

Programming abstractions in C阅读笔记:p123-p126

codists

华为云开发工具CodeArts IDE for C/C++ 开发使用指南

华为云PaaS服务小智

ide 开发工具 华为云 开发环境

文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题

福大大架构师每日一题

福大大架构师每日一题

ARTS 打卡第 1 周

orient

ARTS 打卡计划

Presto 设计与实现(六):JMX

冰心的小屋

数据湖 JMX presto presto 设计与实现

一云多芯能力再获认可!天翼云助推政企上云行稳致远!

天翼云开发者社区

云计算

一个炫酷的头像悬停效果 2

南城FE

CSS 前端 动画 SASS 交互

Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务”

汀丶人工智能

人工智能 Prompt prompt 工程

企业级即时通讯协作和移动应用管理平台哪个品牌好?

WorkPlus

如何使用Redis实现分布式锁?

王磊

Java Java面试题

ARTS 打卡第 1 周

AI帅辉

ARTS 打卡计划

助力人工智能教育普及 宾果智能机器人走进全国千所小学

硬科技星球

开源Java诊断工具Arthas:开篇之watch实战

javalover123

Java 开源 Arthas watch 诊断

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