文档

使用代码检测服务

更新时间:

本文介绍如何开启、设置和运行代码检测服务。

步骤一:准备合适的检测方案

  1. 登录云效 Codeup 首页,选择左侧导航栏检测方案

平台支持系统内置检测方案,你也可以根据业务情况复制或新建方案。

image

  1. 选择合适的检测方案。

使用内置方案

需根据业务情况选择合适的检测方案,平台已内置部分方案供参考使用:

image

可以根据自身情况通过下图①复制或新建自己的方案:

image

复制方案

a. 选中待复制的检测方案。

b.单击对应方案页面右上角的复制方案。

新建方案

a.单击①加号图标。

b.填写方案名称。

c.填写方案描述。

d.选择检测语言。

e.选择检测规则包。

f.点击确定完成创建。

  1. 配置编译参数

说明

为了避免使用时需要重复填写编译配置参数,推荐在方案中设置好默认编译配置

部分检测包需要编译后运行检测,如果未填写编译配置,②处可见对应的提示信息:

image

根据提示填写配置参数即可: image

步骤二:按需调整方案内容

选择检测方案后,可以按需调整方案中已有的规则内容和方案设置。

方案创建者或 Codeup 企业管理员能编辑和删除方案,其他人只能查看和复制方案。

调整规则内容

目前 Codeup 支持的内置检测规则如下:

  • 敏感信息检测

  • 依赖包漏洞检测

  • 源码漏洞检测

  • Java 开发规约检测

  • 代码补丁推荐

当还有未加入方案的规则包时,可以在上图的③处添加平台提供的规则包。加入规则包后,如需查看修改规则,可点击已加入的规则包卡片上④处的「规则数」进行查看和编辑:

image

针对每一条规则,支持编辑其严重等级,部分规则允许自定义检测参数,如通过正则表达式限制检测范围。同时还支持停用不适合的规则或重新启用规则。

请注意:停用规则有以下影响:

  • 运行当前检测方案时将不再执行对应规则。

  • 规则已发现的问题将在下一次检测后自动关闭。

image

针对检测方案的修改行为,都将记录在方案的变更历史中,供追溯查看:

image

调整检测方案设置

1. 在方案的【设置】页面,可以调整方案的名称,填写方案的描述,设置检测的文件白名单。

2. 选择保存。

白名单路径下的文件将自动跳过检测,即不执行检测:

image

重要

删除方案时,需要确保当前方案未与任何检测任务关联,否则需要先与检测任务解绑,然后删除方案,避免对运行的检测任务造成影响。

步骤三:将检测方案应用至代码库

将方案应用于代码库上形成可运行的检测任务,一个代码库最多创建一个检测任务,该任务可选择不同分支多次运行。

  1. 点击主侧菜单检测任务,进入检测任务列表页面。

  2. 点击右上方新建检测任务按钮,进入新建对话框。

  3. 选择期望检测的代码库。

  4. 选择期望使用的检测方案。

  5. 选择检测触发方式。

  6. 勾选同意检测服务协议。

  7. 点击新建并执行检测。

image

除了手动触发外,支持设置检测任务的自动触发方式,包括提交触发和合并请求触发,若选择提交触发,需要指定关注的分支,支持正则匹配。若选择合并请求触发,则该库发生的合并请求,将对源分支合并到目标分支的代码进行检测:

image

针对运行时需要编译的检测包,需要设置检测编译参数,如果在检测方案上已经设置过「默认编译配置」,则会默认继承自动填写至检测任务创建界面,同时也支持在检测任务侧对编译配置进行修改,该修改仅影响当前检测任务,不影响检测方案。

勾选「已阅读并同意检测服务协议」后即可立即新建并针对默认分支执行一次代码检测。

后续也可以通过自动触发或手动触发的方式对指定分支进行检测。

步骤四:查看检测结果

在检测任务中查看检测结果

任务详情包括概览、问题列表和执行历史信息。

1.进入检测任务,选择概览。 2.查看当前分支最近一次成功的全量检测结果和问题列表。

概览

概览包括以下内容:

  • 检测结果:通过状态,以及对应的问题个数和门禁阈值;

  • 问题总览:查看未解决的问题个数和已解决的问题个数;

  • 问题严重等级分布:警告、严重和建议问题个数分布情况;

  • 问题类型分布:安全和规范类问题个数分布;

  • 引入人分布:列出不同用户引入的各类问题数量;

  • 严重问题最多的规则分布:命中严重问题数最多的规则排名;

  • 问题趋势:查看各等级问题的存量趋势;

image

问题列表

问题列表以严重等级和解决状态排序,点击问题行可查看问题详情,针对不关心的问题可以进行忽略,忽略后该问题在该分支将不会再报出:

image

执行历史

代码检测使用云效 Flow 流水线运行,针对检测运行失败的情况,支持点击页面查看运行日志前往云效流水线产品 Flow 查看对应错误日志快速定位和解决问题:

image

image

image

如果最近一次检测运行失败了,进入检测任务详情将保留最近一次成功的检测结果,同时提醒最近一次检测失败和时间信息,支持前往执行日志查看问题并快速解决。

在代码库提交和合并请求中查看检测结果

提交检测结果

在提交、分支视图下,如果对应 Commit 有存在代码检测结果,在列表上可以通过卡片快捷查看:

image

点击可查看检测问题详情。

合并请求检测结果

当选择了合并请求触发,在合并请求列表和合并详情的合并条件中可以看到自动化检测的结果:

image

image

运行完成后,点击「查看详情」可以在当前合并请求的文件变更视图中查看检测出的问题详情,点击可直接跳转至问题代码行:

image

常见问题

1. 如何将检测设置为合并请求卡点

代码检测作为评审的辅助手段,可以减轻代码评审的成本,通过自动化的方式对代码中的规范、安全漏洞进行筛查,并快速暴露出来。

在合并请求中,除了人工评审之外,支持将代码检测作为合并代码前的卡点,当检测设置的门禁不通过时,不允许任何人合并代码,避免质量不达标的代码被合并到生产分支。

步骤一:设置检测阈值门禁

首先,需要设置期望卡点的门禁阈值。

进入当前库的检测任务中,可以看到合并请求门禁设置项,默认不允许存在严重问题,不限警告和建议问题数,可以根据业务情况自行修改:

image

步骤二:设置保护分支卡点

接下来,点击上图中的「前往设置合并请求卡点」,或者打开库设置-分支设置-保护分支规则。

针对期望被合并保护的分支新建保护分支规则,选择分支名,然后在规则设置中打开「要求合并前通过自动化执行检查」,勾选代码检测任务:

image

步骤三:查看合并检测卡点

当检测任务被设置为目标分支的卡点之后,针对被保护的目标分支发起的合并都需要通过检测。检测的内容为基于源分支需要合并到目标分支的差异代码:

image

运行结束后可以点击「查看详情」跳转查看代码行内的问题:

image

对于用于合并请求卡点的检测任务,如果由于没有设置检测任务的自动触发条件导致检测未运行,可以在页面手动点击「立即运行」触发执行,对待合并代码内容进行检测:

image

image

卡点的检测任务被删除的处理说明

如果检测任务已经被设置为卡点,即使手动删除了检测任务,合并的检测卡点仍然是生效的,避免没经过检测的代码被合并保护分支。

此时合并请求中老的已删除的检测任务卡点是失效状态,这种情况需要管理员在当前库新建检测任务,新的检测任务将自动替换老的检测任务继续作为合并请求卡点生效。

2. 代码检测资源消耗如何计算?

检测将使用云效 Flow 流水线资源进行运行,运行的并发数和运行时长将通过流水线资源进行计算,在流水线资源额度内可正常使用检测,如果超出流水线资源额度,可以通过升级套餐或购买资源包获取更多流水线运行资源。

具体当月资源消耗情况可前往云效流水线 Flow 页面左下角「资源」中进行查看:

image

3.如何关闭代码检测

进入代码库,删除对应仓库的检测任务即可,对应系统流水线将自动删除。

6-1