浅聊如何仅半天搭建代码自动审核平台demo

背景

媳妇国庆节在家加班,发现在优化react代码。我凑近一看,原来是代码复杂度高 、相似代码多 、使用的npm包有版本风险。这不就激起我的好奇心了嘛,如果是人工检测审核,那工作量得多大啊。原来是利用了 SonarQube 这个代码自动审核平台。

SonarQube 是什么

官方文档,下面是文档截图。

实际上可以通过该平台可视化方式展现代码中的漏洞、bug、代码质量、测试覆盖率等等。根据时间等多种维度展示代码质量波动情况。

下面是搭建的SnoarQube的平台的demo截图,可以看见内容还是很丰富的。

动手试一下

安装SonarQube

文档提供了两种方式,一种是本地安装,一种是docker。我选择后者,安装过程也非常简单。首先下载一个docker,然后搜索安装并运行镜像即可。而镜像运行的命令在文档也可以看见.

题外话:可以看见sonarqube下载量非常高,达500M+,我之前却从来没听说过。

镜像运行之后,打开http://127.0.0.1:9000就可以看见SonarQube已经安装完成了。

创建代码项目

SonarQube,支持从多种平台导入项目。我在gitlab创建了一个demo项目,根据文档指引,需要在代码里面编写sonar-project.properties和.gitlab-ci.yml两个文件,文件内容根据提示复制内容即可。你会发现,.yml配置里面包含了SONAR_HOST_URL和SONAR_TOKEN两个环境变量。根据文档提示,需要在git项目里:Settings > CI/CD > Variables,创建这两个环境变量,并勾选或关闭Protect Variable、Mask Variable复选框。

发布代码

代码发布,根据 .yml 可以知道,会执行两个 sonarqube-check sonarqube-vulnerability-report 两个stage。但是不出意外的话就是会出意外,pipeline会报错。仔细查看报错内容可以得知,127.0.0.1:9000根本无法访问啊。SonarQube是本地镜像服务,gitlab不可能直接通过域名访问啊。思考片刻,我将自己的127.0.0.1:9000,发布到外网不就解决了吗。经过搜索,发现了ngrok神器。可以代理本机ip到.ngrok-free.app上。经过一番(安装、环境变量配置、脚本启动)操作,成功将本机ip代理到外网上。 接着修改SONAR_HOST_URL为代理的新地址,并重新发布代码触发pipeline。

展望

SonarQube 是真的好,可以从多个维度查看代码质量。并可以结合 devops拒绝辣鸡的代码上线。明天就将它推荐给领导。


此刻传来了媳妇的吐槽:辣鸡SonarQube,代码复杂度计算一点都不合理,为了复杂度指标强行把代码拆散。升级个npm版本,代码又跑不起来了。

相关推荐
kyriewen14 分钟前
Skills 榜前 10 我全装了:只有 3 个能直接用
前端·javascript·程序员
IT_陈寒33 分钟前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
工控丫丫1 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
jerrywus1 小时前
我用 GPT-6.1-sol 做了台会讲解的 3D 售货机:60 罐饮料,一口没喝上
前端·agent·claude
孟陬3 小时前
Foobar 技术周刊#159:当看不懂代码时,如何高效排障调试。脏页陷阱:一条只读查询,写入数 TB 数据。推测解码:大模型加速利器
前端·人工智能·后端
Zhao-Jichao3 小时前
AI Prompting for Everyone 课程笔记 - P17 图像生成 Imaging Generation
前端
Highcharts.js3 小时前
智能数据分析组件Orbit 正式发布与快速上手体验教程
前端·人工智能·信息可视化·数据分析系统·highcharts·orbit·智能可视化
螺丝钉tina4 小时前
[Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
前端·javascript·typescript
小天源5 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库
Highcharts.js6 小时前
React 中原生支持使用 JSX 组件配置自定义表格 Highcharts Grid
前端·javascript·react.js·前端框架·jsx·highcharts·自定义表格