网易首页 > 网易号 > 正文 申请入驻

原来代码的质量也可以被检测:初探 SonarQube

0
分享至

作者:前端小智

前言

最近在自学 DevOps 的过程中,发现除了要了解基本的 CI/CD 流程外,更重要的是了解可以利用哪些工具来辅助整个 CI 的流程,今天来介绍一个好用的代码检测平台:SonarQube。

虽然在现今的开发很多时候都会藉由 code review 搭配各式的 linter 进行开发,但百密总有一疏,这时候就可以透过 SonarQube 帮助开发者检查一些潜在的 bug,这些 bug 有可能在开发时 linter 并没有报错,而且在 code review 时可能也不小心漏看了,假如可以在 CI 的流程中加上 SonarQube 来扫描整个 codebase,这时候就可以让整个项目的代码有更高的品质。

什么是 SonarQube

SonarQube 是一套基于 Java 开发的代码检测以及质量管理平台,由于这套工具是用 Java 开发的原因,所以大家要先记得去安装 **Java Development Kit(JDK)**,这样后续才能顺利的启动 SonarQube。

SonarQube 也提供了不少的服务像是:

  • 网页化操作
  • 支持非常多种程序语言的分析检测
  • 提供代码重复性、潜在 bug、测试覆盖率等等相关报告
  • 提供自动化分析并且结合主流的 CI 工具
  • 提供代码改善建议
  • 整合 JIRA、Mantis、LDAP、Fortify 等外部工具
  • 提供历史纪录以利于后续追踪

由于 SonarQube 提供太多种服务了,这里只列出几点个人觉得最值得提出来与大家分享的内容,有兴趣的读者可以再自行去官网上面进行相关的资料阅读。

启动 SonarQube

由于我是使用 mac 系统,因此这边以 mac 的操作方式进行介绍,首先可以在终端机中进入 /bin/macosx-unversal-64 的文件夹,并下 ./sonar.sh start 这个指令启动 SonarQube 的服务。

启动服务后可以在浏览器打上 localhost:9000 即可开启 SonarQube 的网页,预设的帐号及密码都是 admin ,输入后即可在 local 端开始使用 SonarQube 提供的检测服务喽。

SonarQube 操作说明

登入后就可以开始进行 Project 创建了,这边的 Project 主要是方便开发者可以进行项目品质的控管,创立好 Project 才可以开始针对想要检测的 repository 进行检测。

我们也可以看到 SonarQube 整合了非常多用来创建项目的主流工具例如 GitHub、Jira 等等,假如读者本身是有在使用这些工具进行项目的管理也可以直接整合现有的架构,这边为了方便介绍所以选择手动创建 Project。

建立好 Project 后可以看到 SonarQube 也支持许多主流平台的 CI 机制,这里也是为了方便介绍所以选择手动测试 local repository。

想要进行分析检测之前还需要产生一组 private token,利用这组 token 我们在之后进行检测时可以确保检测的结果会摆在这个 project 内。

之后就可以选择要检测的代码是属于哪种语言以及目前电脑的 OS,都选择完后可以去官网上下载最重要的分析工具 SonarScanner,这套 scanner 就是负责检测代码的工具。

下载完后就可以複制下方的指令进行代码的检测啦!

SonarScanner 检测结果

在上面的步骤检测完后,我们回到 SonarQube 的平台就可以看到刚刚建立的 project 已经有了初步的检测报告,假如代码都没有什麽潜在的问题就可以看到报告会是绿色 Passed 的状态。

但假如代码有潜在的问题,这时候报告就会出现红色的 Failed 并且指出有几个 bug 产生。

接著点击 issues tab 就可以看到目前潜在的 bug 是从哪个档案的哪一行中产生。

再点进去后就会看到潜在的 bug 的错误讯息,我们可以发现 array 的长度一定会是大于等于 0 可是我这边却写了小于 0,所以这个 if 判断条件永远都不会通过。

但我们回到代码后可以发现即便我们有安装 linter 也不会检查出这种看起来就是有问题的写法,因为 linter 通常都是在检查语法上的错误,这时候 SonarScanner 就帮助了我们可以进行更深入的检查。

SonarScanner 配置

其实 SonarScanner 也可以进行一些自定义的配置,这时候就需要建立一个叫 sonar-project.properties 的文件,这份文件裡面可以设定一些 SonarScanner 提供的 analysis parameter,由于这些配置参数实在是太多了,所以这里不会一一介绍,有兴趣的读者可以参考官网,裡面有所有参数的详细介绍,整体写法会像下图这样:

总结

这次介绍了 SonarQube 这套代码检测平台,由于笔者本身是一位前端工程师,因此只会利用 ESLint 或者 TSLint 进代码但程式码还会有一些潜在的 bug 可能是这些 linter 无法检查出来的,这时候 SonarQube 就起了一个很大的作用,帮助我们在开发时可以进行更深入的解析,假如读者未来有要做一些 CI 流程的话,不妨也可以把 SonarQube 考虑进去喔。

作者:Andy Chen

译者:小智

来源:medium

原文:https://medium.com/starbugs/%E5%8E%9F%E4%BE%86%E7%A8%8B%E5%BC%8F%E7%A2%BC%E5%93%81%E8%B3%AA%E4%B9%9F%E5%8F%AF%E4%BB%A5%E8%A2%AB%E6%AA%A2%E6%B8%AC-%E5%88%9D%E6%8E%A2-sonarqube-14e99687806e

来源: 大迁世界

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
安东内利五连胜66分领跑,F1转战西班牙

安东内利五连胜66分领跑,F1转战西班牙

慢享生活集
2026-06-08 18:31:24
情侣分手可以多不体面?评论区笑发财了

情侣分手可以多不体面?评论区笑发财了

阿康四岁啦
2026-06-06 11:09:40
“你儿子专注力废了”,小学男生每天听故事,过来人点出真相

“你儿子专注力废了”,小学男生每天听故事,过来人点出真相

泽泽先生
2026-06-06 21:14:40
上海那三万日本侨民要睡不着了,不是因为战争,而是因为日本政府

上海那三万日本侨民要睡不着了,不是因为战争,而是因为日本政府

春露秋霜
2026-04-03 06:51:26
伊朗和以色列先后宣布停止袭击对方 WTI原油期货大幅跳水日内转跌

伊朗和以色列先后宣布停止袭击对方 WTI原油期货大幅跳水日内转跌

财联社
2026-06-08 21:42:13
刚夺冠就说再见!上海男篮首位离队球员曝光,临别感言引共鸣

刚夺冠就说再见!上海男篮首位离队球员曝光,临别感言引共鸣

冷紫葉
2026-06-09 00:45:11
朝鲜援俄真实伤亡人数曾公开,惨烈程度超乎想象!它换来了啥?

朝鲜援俄真实伤亡人数曾公开,惨烈程度超乎想象!它换来了啥?

尘世闲云
2026-06-08 13:22:02
在美卖菜的山东大娘在硅谷集市站稳脚跟,儿子职业曝光,太有实力

在美卖菜的山东大娘在硅谷集市站稳脚跟,儿子职业曝光,太有实力

天天热点见闻
2026-05-22 06:03:47
22岁银行女生惨遭前男友杀害,男方伪装快递员骗开门,妈妈曝细节

22岁银行女生惨遭前男友杀害,男方伪装快递员骗开门,妈妈曝细节

180视角
2026-05-15 08:52:13
刚到美国就被带走!世界杯球星在芝加哥机场遭盘查7小时,同行摄影师直接被拒绝入境

刚到美国就被带走!世界杯球星在芝加哥机场遭盘查7小时,同行摄影师直接被拒绝入境

华人生活网
2026-06-09 01:46:51
那个拯救了安卓主屏的人,2011年后再未露面

那个拯救了安卓主屏的人,2011年后再未露面

爬虫饲养员
2026-06-07 00:08:38
马云再聊未来房价:180万的房子,到2030年还能值多少钱?

马云再聊未来房价:180万的房子,到2030年还能值多少钱?

猫叔东山再起
2026-06-08 09:25:13
太狠了!丈夫送锦旗到男小三小区和妻子单位,妻子当街下跪引热议

太狠了!丈夫送锦旗到男小三小区和妻子单位,妻子当街下跪引热议

火山詩话
2026-06-07 16:12:39
这些人要发抖了!中纪委再次出动,剑指这些歪风和腐败问题!

这些人要发抖了!中纪委再次出动,剑指这些歪风和腐败问题!

职场资深秘书
2026-06-08 14:00:02
8日20:00,郑钦文2026草地赛季首秀

8日20:00,郑钦文2026草地赛季首秀

极目新闻
2026-06-08 08:23:29
伊朗一对“情侣”躲进谷仓中拥吻,被发现时,已经吻了2800年!

伊朗一对“情侣”躲进谷仓中拥吻,被发现时,已经吻了2800年!

抽象派大师
2026-06-05 01:43:30
成本仅1000万美元,拿下全球冠军!21岁导演把《星球大战》干翻了

成本仅1000万美元,拿下全球冠军!21岁导演把《星球大战》干翻了

乡野小珥
2026-06-07 01:57:43
高盛:根据历史指标判断 美国股市出现些许过热迹象

高盛:根据历史指标判断 美国股市出现些许过热迹象

财联社
2026-06-08 16:48:06
被忽视的“东瀛宝马”SUV!续航1301km,仅售11万多,却无人识货

被忽视的“东瀛宝马”SUV!续航1301km,仅售11万多,却无人识货

隔壁说车老王
2026-06-06 07:45:26
【2026.6.8】爆姐的饭后爆料:生命不止,爆料不息!

【2026.6.8】爆姐的饭后爆料:生命不止,爆料不息!

娱乐真爆姐
2026-06-08 23:35:36
2026-06-09 02:56:49
Nodejs开发
Nodejs开发
分享只有程序员懂的干货
648文章数 823关注度
往期回顾 全部

科技要闻

干掉聊天框,ChatGPT不只回答,还要办事

头条要闻

女主播拒绝男子追求被快递包裹炸伤 当事人最新发声

头条要闻

女主播拒绝男子追求被快递包裹炸伤 当事人最新发声

体育要闻

2026年世界杯?到底会是什么样?

娱乐要闻

越扒越有!奔跑吧文旅合作费近两千万

财经要闻

华润万家蜜薯被检查农药超标

汽车要闻

从真实事故场景出发 吉利银河星舰7 EV硬核安全“超纲”了

态度原创

教育
数码
游戏
本地
房产

教育要闻

盘点近几年高考数学难度!

数码要闻

Siri已集成至相机应用

永远不上PS5!XBOX重申《战争机器》绝非限时独占

本地新闻

用杨柳青年画的方式,打开天津

房产要闻

10,000元大奖等你拿!广州城投地产IP形象设计大赛火热开启!以创意贏未来!

无障碍浏览 进入关怀版