title | pageTitle | pagePrevTitle | pagePrev | pageNextTitle | pageNext | alias | ||
---|---|---|---|---|---|---|---|---|
扫描任务 - CODING 帮助中心 |
扫描任务 |
快速入门 |
code-scan/start.html |
扫描方案——介绍 |
code-scan/plan/intro.html |
|
扫描任务是执行代码扫描的载体。代码扫描任务的执行需要勾选相应的扫描方案,选定后将会基于此方案对指定的代码库分支执行扫描。任务完成后会在概览页展示扫描结果(包含分支概览、问题列表、度量结果),多角度的数据统计结果展示能够辅助知悉代码质量的整体情况。通过设置触发规则,还能够实现一经推送便自动执行代码扫描任务的能力。
单次扫描任务仅能够关联代码仓库里的单个分支,一个分支无法运行多个扫描任务
进入扫描任务后会显示当前项目中所有由用户主动创建、持续集成自动生成的扫描任务。筛选器支持代码仓库与代码分支的筛选,搜索框中支持按照扫描任务名称搜索。
进入任一扫描任务,可以按照 tab 栏目依次查看此次任务的问题概览、问题列表、度量结果、扫描历史和设置。
问题概览主要面向管理者,用于展示某分支代码质量的现状,可以帮助管理者快速了解分支的代码质量。页面由概览页和数据图表详情组成。
- 质量门禁
质量门禁结果可以帮助分析者快速衡量当前分支代码质量是否符合预期,以帮助其进行下一步的决策。
- 分支概览
分支概览页用于展示最近一次扫描任务所发现的问题,内容包括本次扫描后所暴露的问题,级别由高到低分为:致命、错误、警告、提示。初始值为系统根据规则内容推荐,用户可以在扫描方案中调整这个规则的严重级别,调整后需要进行全量扫描使得调整生效。
- 圈复杂度
圈复杂度是一种代码复杂度的衡量标准,用来表示程序的复杂度。圈复杂度大说明程序代码的判断逻辑复杂,可能存在质量低下且难以测试和维护的问题。
根据该扫描任务的执行结果,详细展示所有待解决的问题,可以通过筛选器快速定位相关问题。
- 问题级别
问题级别由高到低分为:致命、错误、警告、提示。初始值为系统根据规则内容推荐,用户可以在扫描方案中调整这个规则的严重级别,调整后需要进行全量扫描使得调整生效。
- 状态说明
问题分为三个状态:未处理、已处理、已关闭。问题的初始状态为未处理,用户可以自行将问题标记为处理状态将变成已处理,当新一次扫描时发现历史扫描中发现的问题代码已修复后问题状态将变为已关闭。
- 责任人
问题的责任人默认为该问题代码的提交人,无需用户根据提交记录去手动查找,提升解决问题的效率。
- 解决方法
针对暴露出问题的文件,可以在处理问题完成后批量标记处理。若是暂不处理的历史问题,可批量重置为无需修复。若是因使用了不合适的规则发现了问题,可以通过规则过滤不再启用该规则。对于不应扫描的文件,可以使用路径过滤略过该文件的扫描。
问题详情
点击进入任意问题文件,可以查看问题代码详情,一个文件内的同一规则的问题将聚合在一起展示。问题详情视图右侧将展示问题信息和该问题的操作记录以及该缺陷的位置。
点击规则信息可以查看规则说明,部分规则还提供了修改建议。规则说明中的信息是该规则的原始信息详情,如果在扫描方案中修改了该规则的相关信息(如严重级别、参数等),此时请忽略该原始信息与扫描方案对应规则信息不匹配问题。
根据该扫描任务统计出最近一次的执行结果,包含圈复杂度、重复代码、代码统计三个纬度的扫描详细结果。通过及时处理圈复杂度超标以及重复代码,能够让代码变得更加易于理解,进而提升代码的质量以及团队效率。
圈复杂度是一种代码复杂度的衡量标准,它可以用来衡量一个方法中结构的复杂程度。其数量上表现为独立执行路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。
- 圈复杂度的意义
圈复杂度高的模块和方法,其缺陷个数往往也多,需重点关注。它可用于指导测试用例设计,创建数量与被测代码圈复杂度值相等的测试用例,以此提升用例对代码的分支覆盖率。
- 如何处理圈复杂度较高的函数?
建议采用重构函数的方式,即提炼函数、替换算法。 简化条件表达式的方法有逆向表达、分解条件以及合并条件,以多态取代条件式等。 简化函数调用可以采取读写分离、参数化方法和以明确函数取代参数的方法。
在重复代码页中将会对重复的代码块有特殊标注,点击红色区域还可以选择两个文件进行对比。
该功能可以统计运行该扫描任务的代码仓库里所有文件的代码情况。能够分析出文件数量、代码行及代码分布,帮助团队快速掌握目前的代码量以及代码分布情况。
该功能页汇总了扫描任务每次的执行的情况及扫描结果,可以用于精准定位每次扫描执行的问题变化。该功能页可以看到扫描的启动时间、扫描类型等信息。
点击扫描详情将会展示扫描任务的运行日志。
扫描结果将会展示本次扫描在代码检查和代码度量上的变化情况,可以查看新增 / 关闭的问题、圈复杂度超标方法、重复代码的变化以及代码统计的结果。
该功能页用于配置扫描任务。
用于展示 / 编辑该扫描任务的基本信息,目前支持灵活切换扫描方案,便于多种角度审视代码质量。
触发规则用于设置自动化执行扫描任务的触发条件,目前支持以下两种触发方式:
- 新建合并请求时触发执行
勾选后,合并到此分支的合并请求在新建或源分支更新时将自动触发代码扫描。 触发后,使用当前任务的扫描方案及质量门禁对合入代码进行扫描和管控。
- 推送代码时触发执行
勾选该触发条件后,在您推送代码到该分支后会自动执行代码扫描,便于您快速了解新推送的代码质量。
质量门禁用于直观衡量当前代码质量是否满足预期的标准,辅助用户进行决策。比如是否允许和并请求并入分支,是否允许发布上线。您可以根据团队情况设置质量门禁的阈值,如果扫描出来的质量问题均低于阈值则视为通过质量门禁,否则不通过。
您可以在通知提醒中添加执行完成时需通知的成员。开启后将会在右上方的通知铃铛处、小程序的通知框中一同推送,第一时间知晓代码扫描的结果。
==== 2020/11/18 ====