使用代码检测服务

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何设计属于您业务场景的代码检测方案。

步骤一:新建检测方案

  1. 登录云效代码管理 Codeup首页,单击左侧导航栏代码检测 > 检测方案

    高的 (10).png

  2. 配置检测方案。

    平台已内置部分方案供参考使用,您也可以结合自身的业务场景复制或新建适合自己的检测方案。

    1. 内置方案

      可以根据自身情况通过图示方式复制或新建自己的方案。

      高的 (11).png

    2. 复制方案

      选择适合您的推荐检测方案进行复制。高的 (8).png

    3. 新建检测方案高的 (12).png

    4. 编译配置

      说明

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

      部分规则需编译后运行,如果未填写配置编译命令,会因缺失编译参数导致检测任务无效。

      高的 (14).png根据检测规则提示进行编译配置即可。 高的 (15).png

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

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

说明

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

  1. 调整检测规则内容。

    以Java为例,目前Codeup支持的内置检测规则如下:

    • 敏感信息检测

    • 依赖包漏洞检测

    • 源码漏洞检测

    • Java 开发规约检测

    • 代码补丁推荐

    • Java安全检测

    如需加入其它的方案规则包,可以参考内置方案示图④添加平台提供的规则包或自定义规则包。

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

    警告

    停用规则有以下影响:

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

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

    image

  2. 检测方案关联检测任务。高的 (20).png

    新建检测任务。高的 (21).png

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

    高的 (24).png

  4. 调整检测方案设置。

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

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

    高的 (19).png

    重要

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

步骤三:将检测方案关联至代码库

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

  1. 代码检测 > 检测任务 > 新建检测任务高的 (22).png

  2. 选择合适的检测任务项。高的 (23).png

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

    image

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

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

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

步骤四:查看检测结果

  • 基于检测任务查看检测结果。

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

    • 概览内容:

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

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

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

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

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

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

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

      image

    • 问题列表

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

      image

    • 运行历史

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

      image

      image

      image

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

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

    • 提交检测结果

      在提交、分支视图下,如果对应Commit有存在代码检测结果,在列表上可以通过卡片快捷查看,单击可查看检测问题详情。image

    • 合并请求检测结果

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

      imageimage

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

      image

常见问题

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

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

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

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

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

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

image

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

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

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

image

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

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

image

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

image

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

image

image

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

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

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

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

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

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

竖向多个 (1).png

3.如何关闭代码检测?

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

6-1