2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

使用 SonarQube 和 Visual Studio 减轻技术债

  • 2015-05-06
  • 本文字数:1136 字

    阅读完需:约 4 分钟

来自 SonarSource 的 Olivier Gaudin 与来自微软的 Stuart Kent 在本周举行的 Build 大会上为听众介绍了使用 SonarQube 所带来的益处,以及如何让它更方便地为.NET 开发者所用。Kent began 在演讲的开始描述了技术债的累积所带来的沉重负担。当某个项目的开发过程结束之后,此时的技术债只是会分散实现新功能的注意力而已,但随着时间的推移,开发团队经常会发现他们的所有时间都消耗在处理技术债上了。

Gaudin 在这个背景下介绍了如何衡量代码的质量与技术债的技巧。在分析代码库时,有一种非正式的衡量指标叫做每分钟飙脏话的次数。他为我们描述了技术债的出现是由于开发者这 7 种致命的原罪所造成的:

  1. 重复
  2. 糟糕的复杂性分布
  3. 意大利面式设计风格
  4. 缺少单元测试
  5. 缺乏代码标准
  6. 潜在的 bug
  7. 注释不足或过多,或者干脆不正确(单元测试对这种类型的 bug 无能为力)

Gaudin 表示,当项目已经开始运行之后,再回过头去实现某种试图缓解技术债的策略是非常困难的。有许多原因会让团队感觉实现这一点过于困难,包括缺乏自主性(在 QA 与开发者之间,谁应当对质量拥有自主权呢)、多样化的需求以及质量门。为了“改变游戏规则”,Gaudin 提出了以下几条建议:

  • 让开发团队拥有质量的自主权
  • 缩短反馈循环
  • 统一质量门
  • 成本并不重要
  • 这很有趣!

为了对实现目标起到帮助,应当尽量缩短反馈循环,让开发团队能够第一时间获得反馈。对于现有的软件来说,重要的是不要让问题变得更糟了,因此首先要改进正在编写的新代码的质量,然后再去处理遗留代码中的问题。

SonarQube 为开发者提供了一种描述代码库的仪表板,其中提供了多种实用的指标。例如某些仪表板上的 widget 就提供了处于监控中的项目的代码行数和代码覆盖率,此外还包括单元测试覆盖率和这些单元测试的通过率。它还能够对新编写的代码进行分离式的代码覆盖率检查,而不会受现有代码库的影响,因此团队就能够确保他们所编写的新代码不会使质量继续下降。

SonarQube 从用户那里获得的反馈是,虽然这一工具在 Java 项目上表现很好,但它并不符合 C#的风格。因此 SonarQube 联系了微软,希望得到一些优秀 C#开发者的帮助。Kent 表示,虽然代码质量数据非常实用,但一上来就面对大量的指标(代码分析、克隆、代码指标等等)会让人感到喘不过气。他建议使用者创建一个质量简报,对显示哪些数据进行过滤、建立基线、设立质量门、并设立一种补救政策,从而得到一个经过精练的问题列表,让它帮助你避免、或至少是减少你被过多的工作压垮的机会。

虽然还有一部分工作还在进行中,但新版本已经可以在 TFS2013 中使用了,有兴趣的开发者可以尝试一下。要了解更多的细节,请参考Stuart Kent 撰写的关于使用SonarQube 整合MSBuild 与Team Build 的文章。

查看英文原文: Reducing Technical Debt with SonarQube and Visual Studio

2015-05-06 09:303817
用户头像

发布了 428 篇内容, 共 198.2 次阅读, 收获喜欢 39 次。

关注

评论

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

Substrate 合约书之合约综述

Patract

智能合约

2021最新拼多多Java面试题(现场五面),全面涵盖Java高级到高并发

钟奕礼

Java 编程 程序员 架构 面试

带你全面认识CMMI V2.0(五)——改进

IPD产品研发管理

项目管理 管理 软件 CMMI

常垒资本石矛:寻找ToB投资中的「非共识」

ToB行业头条

SaaS tob

1TB每日仅需6元!USnap磁盘快照服务全新上线,精确到秒级恢复

UCloud技术

快照 备份

4月17日,HarmonyOS开发者日将于上海启幕

Geek_283163

华为

架构实战营 模块一:课后作业

Ahu

架构实战营

Java-GC概述

MemVerge使得大内存应用在 Ice Lake CPU上如虎添翼

Steven Xu

redis 内存 高性能 持久化存储 kvm

线程池 图解

线程池

【业务架构训练营】模块一作业

汪大侠

别再面向 for 循环编程了,Spring 自带的观察者模式就很香!

Java架构师迁哥

这份阿里21年最新版Java面试手册简直无敌了,已经助我拿下五个大厂offer!

Java架构之路

Java 程序员 架构 面试 编程语言

在小公司“混”了两年,我只认真做了五件事,如今顺利拿到天猫Offer,迈上人生的新台阶!

Java架构追梦

Java 面试 天猫Offer 成长路线图

肝了一个月,终于完成了24万字的Java面试手册!

码农之家

Java 编程 程序员 互联网 面试

Java多线程与并发系列从0到1全部合集!拿走不送~

钟奕礼

Java 编程 程序员 架构 面试

Java面试题全部196题合集:涵盖大厂必考的9大技术点

钟奕礼

Java 编程 程序员 架构 面试

模块一:课后作业

冷酷小绵羊

【架构实战营】模块1作业

毛国庆

架构实战营

Android高级工程师进阶学习,架构师必备技能

欢喜学安卓

android 程序员 面试 移动开发

28次面试从未被拒,只因学了阿里P8大牛写的这份《Java技术成长笔记》

Java架构之路

Java 程序员 架构 面试 编程语言

全网疯传!对标阿里P5-P9的知识体系学习路线及阿里内部Java核心知识手册。

Java架构之路

Java 程序员 架构 面试 编程语言

架构实战营模块1作业

林子钧

作业 架构实战营 模块一

架构实战营模块1学习总结

林子钧

学习 架构实战营 模块一

ElasticSearch架构及核心概念

五分钟学大数据

ES 4月日更

YouTube视频转MP3音频 (批量、高效、快捷)

科技猫

分享 教程 视频处理 youtube youtube转mp3

架构实战营-模块1-微信业务架构&学生管理系统方案

Lane

MemVerge 和百奥智汇用大内存技术加速癌症和新冠病毒的研究

Steven Xu

内存 高性能 持久化存储 I/O

阿里P9力荐Spring Boot学习笔记,一步一步学习Spring Boot,学到的不单单是基础

Java架构师迁哥

python实现AES/DES/RSA/MD5/SM2/SM4/3DES加密算法模板汇总

小小咸鱼ywy

Python 加密 rsa AES

架构实战

颜培攀

架构实战营

使用SonarQube和Visual Studio减轻技术债_.NET_Jeff Martin_InfoQ精选文章