写点什么

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

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

关注

评论

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

公有云数据库新趋势,企业降本增效正当时

MatrixOrigin

数据库 分布式 云原生 超融合 HTAP

银行数字化转型研究与敏捷转型探索

L3C老司机

数字化转型 敏捷转型 敏捷组织 银行转型 敏捷探索

OpenAI发布ChatGPT函数调用和API更新

楚少AI

openai GPT-4 ChatGPT4 chatgpt api gpt-3.5-turbo-16k

重庆企业购买堡垒机选择哪家好?理由有哪些?

行云管家

网络安全 堡垒机 重庆

火山引擎DataLeap:一个易用、高效的数据目录,是如何搭建的?

字节跳动数据平台

大数据 数据治理 数据目录 数据研发

还在为618电商推送方案烦恼?我们帮你做好了!

HarmonyOS SDK

HMS Core

推动开源行业高质量发展|2023开放原子全球开源峰会圆满落幕

开放原子开源基金会

开源 开发原子全球开源峰会 开发原子

南宁建宁水务集团财务共享、全面预算项目正式启动

用友BIP

弥合风险缺口 筑牢共享安全|2023开放原子全球开源峰会开源安全技术与实践分论坛成功举办

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 开源安全技术与实践

GitHub收获70K+Star!阿里巴巴总结的「百亿级别并发设计手册」太香了

互联网架构师小马

Java 系统设计 高并发

OpenInfra基金会在亚洲、欧洲正式设立运营中心

说山水

软件测试/测试开发丨Python类与对象学习笔记

测试人

Python 程序员 软件测试 测试开发 类与对象

MaxCompute中如何处理异常字符

阿里云大数据AI技术

大数据 数据处理 企业号 6 月 PK 榜

活动预约!华为云企业快成长大数据技术创新论坛成都站6月16日举行

说山水

河北国控携手用友探索数智司库,加快建设世界一流

用友BIP

全球司库

牛逼!Windows竟然也能运行QEMU虚拟机!

吴脑的键客

qemu windows10 windows 11

透明LED显示屏报价方案

Dylan

方案 屏幕亮度 报价 像素 LED显示屏

如何成功实施一个数据治理项目?实施步骤有哪些?

袋鼠云数栈

数字化转型 数据治理 企业号 6 月 PK 榜

HummerRisk 开发手册:Restful Api 使用

HummerCloud

开源 云原生 云安全

膜拜!Alibaba最新发布SprinBoot:进阶原理实战与面试题分析指南

互联网架构师小马

Java spring 微服务 Spring Boot 框架

打造科学新高地|2023开放原子全球开源峰会科学智能分论坛圆满举行

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 科学智能

如何用Taro打造敏捷的移动App架构

没有用户名丶

TG Pro for mac:Mac温度和风扇速度如何控制?

背包客

深度学习 macos Mac软件 MacBook Pro TG Pro for mac

知乎最具争议的Java面试成神笔记,GitHub已下载量已过百万

互联网架构师小马

Java java面试 Java八股文 Java面试题 Java面试八股文

用友承办全国两化融合标委会工业互联网管理标准工作组全体成员大会圆满召开

用友BIP

工业互联网

【Netty】「萌新入门」(二)剖析 EventLoop

sidiot

Java 后端 Netty 6 月 优质更文活动

架构训练营模块3作业——外包学生管理系统的架构文档

Geek_3d7c4d

#架构训练营

爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

互联网架构师小马

Java IDEA

Battery Indicator for Mac:Mac笔记本电脑电池电量剩余百分比显示工具

背包客

macos Mac软件 MacBook Pro Battery Mac电量显示软件

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