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