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

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

关注

评论

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

开源软件:释放创新的力量,改变数字世界的游戏规则

SEAL安全

开源软件 企业号10月PK榜

打造美团外卖新体验,HarmonyOS SDK持续赋能开发者共赢鸿蒙生态

HarmonyOS SDK

HarmonyOS

软件测试|Python绘图神器——Matplotlib使用教程(一)

霍格沃兹测试开发学社

Premiere Pro 2024 Mac版系统要求 PR2024中文破解补丁

Rose

Premiere Pro2024激活版 Premiere Pro 2024 pr2024破解版

Vert.x教程(一):如何搭建一个web应用

Kevin_913

Java 教程 Vert.x

【2023最新】科学数学软件MATLAB R2023b安装秘钥

Rose

数学软件 MATLAB R2023a MATLAB R2023b破解版 MATLAB安装秘钥

Amazon Lightsail 宣布为域注册和 DNS 自动配置提供支持

亚马逊云科技 (Amazon Web Services)

DNS cli VPS Amazon Lightsail Amazon Route 53

用友携手厦门国会:引领智能会计新时代,共谱数字教育新篇章

用友BIP

智能会计

一个平台搞定数据治理,让数据资产发挥价值

袋鼠云数栈

大数据 数据中台 数据治理 数据资产

用友&陕建数科携手共创,实现生态共赢!

用友BIP

数科公司

用友签约索通发展,共建冶金行业新一代数智化智能工厂

用友BIP

模具制造业云MES系统难点及其解决方案

万界星空科技

工业互联网 云mes 模具工厂 模具mes 免费mes

Boris FX Optics 2024:打造电影级视觉特效的终极工具

Rose

Boris FX Optics 2024 Optics 2024破解补丁 光晕光学特效

2024北京国际信息通信展览会(PT展)

AIOTE智博会

通信展 pt展

如何建设企业级API网关

谷云科技RestCloud

API 网关 企业级低代码平台

设备组件文件转换为EVE-NG环境的支持组件怎么操作呢

小魏写代码

概念回顾:混合负载均衡、全局服务器负载均衡、DNS 负载均衡、云负载均衡

NGINX开源社区

什么是混合负载均衡? 什么是 DNS 负载均衡? 什么是云负载均衡?

软件测试|Python字符串的这些操作,你可都学会了?

霍格沃兹测试开发学社

软件开发全套资料整理下载(投标支撑,立项,研发,测试,实施维护,安全监测,服务巡检,结项,验收支撑)

金陵老街

pmp 项目经理 软件文档 投标文档 验收文档

AdGuard for Mac(macOS上的广告拦截工具)中文版 支持M1/M2

Rose

AdGuard下载 Mac广告拦截 AdGuard Mac版

东莞理工学院第四届“火焰杯”软件测试高校就业选拔赛颁奖典礼

测试人

软件测试

传统渠道DMS系统跟不上时代?是时候建立多级渠道运营系统了

用友BIP

渠道运营

你的Mac需要一次大扫除!试试App Cleaner & Uninstaller for Mac

Rose

App Cleaner 苹果mac系统优化 Mac清理工具

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