如何提高代码质量,代码质量检测怎么高效落地
背景:代码质量检测怎么高效落地,云效「Flow」 提供代码扫描、安全扫描和各种自动化测试能力,支持人工测试卡点、自动化验证卡点等多种代码质量检测红线,确保业务质量。云效流水线 Flow流水线是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅。
更多「云效」产品,查看:云效快速入门
一、代码扫描
1、代码扫描能力
云效Flow 为主流语言提供了开箱即用的代码扫描能力,为用户提供了快速检测代码质量检测的能力。
支持语言和规则
目前飞流支持扫描的语言和规则,如下表所示: 查看详情点击代码扫描能力 (aliyun.com)

扫描场景支持
-
代码全量扫描
-
代码增量扫描 全量扫描和增量扫描
-
特定的代码目录扫描 指定或排除目录扫描
-
指定规则集扫描 指定扫描规则集
2、使用代码扫描
云效Flow 提供了开箱即用的代码扫描能力,在流水线中添加「代码扫描」任务,即可启用。用户可以通过以下方式添加代码扫描任务。
-
使用模板新建流水线,选择包含 「代码扫描」 任务的模板
-
在已有的流水线中,添加新的阶段,并选择「代码扫描」任务
流水线模版创建
新建流水线时,选择对应的开发语言,可以查看当前语言下的默认流水线模版,选择带有“代码扫描”节点的流水线模版,即可快速使用代码扫描能力 。

编排流水线,添加代码扫描任务
在流水线编排中,可以通过添加任务,在任务类型分类“代码扫描”的任务,可以快速的添加代码扫描任务 。

3、全量扫描和增量扫描
云效Flow 支持代码全量扫描和增量扫描,可以根据需要,选择合适的扫描方式进行使用。
1) 代码规约全量扫描,通过飞流的扫描任务对指定的代码工程进行编码规约全量检测。
优点: 支持跨文件引用, 代码扫描全面。
缺点: 但扫描速度较慢,问题量会比较多,难以修复
2) 代码规约增量扫描,是基于 Gitlab 的一次 push ,自动获取 diff 内容,对 diff 文件用编码规约规则进行扫描,并过滤出此次提交产生 diff 规约问题功能。
优点: 只扫描 diff 文件,扫描速度很快,增量问题直接关联到人,能有效防止代码提交引进新问题数。
缺点: 因只扫描 diff 文件,不能发现跨文件引用出现的规约问题。
4、P3C代码扫描
Java 规约扫描是阿里巴巴多年经验提炼的 Java规范- 包含7大类 Java 代码规则
-
命名规约
-
注释规范
-
集合
-
OOP 规约
-
并发处理
-
控制语句
-
其他。如果未做扫描配置,默认会对所有规则进行扫描,也可以在规约扫描组件配置。
指定扫描规则集
配置指定规则集,配置规则集如下图所示: 1)在流水线编辑状态,点击相应的规约扫描卡片 2)在展开的卡片抽屉上,点击任务列表 - 如图中:Java 代码扫描 3)在规约集合处,配置相应的规则集

指定或排除目录扫描
配置目录扫描:
1)在流水线编辑状态,点击相应的规约扫描卡片,
2)在展开的卡片抽屉上,点击任务列表 - 如图中:Java 代码扫描
3)子目录:配置扫描的相应目录;排除子目录:配置排除在扫描范围内的相应目录。

5、使用自定义代码扫描规则
目前云效Flow 已经内置了支持 Java,JavaScript,Python,Go,TypeScript,PHP 等语言的代码质量扫描能力,并提供了默认的代码扫描规则。对于需要对扫描规则进行调整的用户可以使用自定义代码扫描规则。
ps:更多规则请参考ESLint官方文档
目前支持自定义代码扫描规则如下:
1)、ESLint自定义规则
添加代码扫描任务
添加流水线任务并选择JavaScript代码扫描,如下所示:

使用自定义规则
默认情况下Flow使用内置的eslint检查规则,如果需要使用自定义规则,需要在任务配置中勾选“使用本地ESLint配置”,勾选后需要确保项目根路径下包含.eslintrc.*文件即可。

2)、TypeScript自定义规则
添加TS代码扫描任务
添加任务并选择TypeScript代码扫描任务,如下所示:

使用自定义规则
默认情况下,Flow会使用TS Lint默认的代码扫描规则。为了使用自定义的代码扫描规则用户需要在项目根路径下提供tslint.json文件。
初次使用可以使用如下命令生成该文件:
tslint --init
保存并运行流水线,TSLint任务会自动检查代码项目根路径下是否包含该文件,如果包含则使用用户定义的tslint.json文件。

3)、Java P3C自定义规则
自定义规则集
用户可以从Github获取默认的规则集合文件,并提交到代码仓库中。添加 Java 代码扫描如下所示:

在任务配置中,勾选“使用自定义规则目录”选项,并制定自定义规则文件所在目录,如下图所示:

保存并运行流水线即可使用代码库中定义的自定义规则集。
二、单元测试
云效Flow 为主流语言提供了开箱即用的单元测试能力,可以方便的对代码进行单元检测。
支持语言
目前飞流支持单元测试的语言如下表所示:
-
Java Maven
-
Java Gradle
-
Nodejs
-
Python
-
PHP Codeception
-
PHP Unittest
-
Golang
如何使用单元测试
在飞流中可以通过流水线任务快速的使用单元测试。
新建流水线时,通过流水线模版创建单元测试任务
新建流水线时,选择对应的开发语言,可以查看当前语言下的默认流水线模版,选择带有“测试”节点的流水线模版,即可快速使用单元测试能力

编辑流水线时,通过任务模版创建单元测试任务
在流水线编排中,可以通过添加任务,选择分类在“测试”下的任务,对应使用的语言来创建单元测试。

三、质量红线
质量红线是云效Flow 流水线提供的质量卡点能力, 用于标准化质量标准,当阶段中存在质量项尚未达标的情况下,阻止发布流程进入到下一阶段(环节)。
配置质量红线
质量红线当前支持在测试相关的任务中进行设置,包含:
-
代码扫描能力
-
单元测试
在流水线编辑状态,点击测试相关的任务, 点击“添加红线”,即可出现红线信息,用于指定当前测试任务必须达到的标准。
以扫描任务为例,可以设定红线如下图:
-
Blocker的问题为0
-
Major的问题为0
-
Critial的问题为0

质量红线生效
在流水线运行状态, 会根据对应的质量红线对测试任务进行判断,是否能够通过红线,如果未通过红线,对应的任务将失败。

质量红线跳过
考虑在一些特殊的情况下,未通过质量红线的流程也需要继续往下执行,飞流也提供了“跳过”的能力,可以由管理员将红线跳过。

云效流水线 Flow 流水线是持续交付的载体。云效Flow做质量检测,能够保障高质量的交付速度,为你和团队提供代码扫描、 安全扫描和各种自动化测试能力,支持人工测试卡点、自动化验证卡点等多种质量红线,确保业务质量。通过持续向团队提供及时反馈,让交付过程高效顺畅。
关于我们
更多关于云效DevOps的干货及云效动态,可微信搜索关注【云效】公众号~
彩蛋:公众号后台回复【指南】,可获得《阿里巴巴DevOps实践指南》&《10倍研发效能提升案例集》~
看完觉得对您有所帮助别忘记点赞、收藏和关注呦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了