腾讯云代码分析腾讯云代码分析
指南
API
  • 深入

    • API 触发分析
    • 分析速度优化
    • 问题检出率提升
  • 其他

    • 问题忽略方式
立即体验
  • 服务协议
  • 隐私协议
  • 简体中文
  • English
指南
API
  • 深入

    • API 触发分析
    • 分析速度优化
    • 问题检出率提升
  • 其他

    • 问题忽略方式
立即体验
  • 服务协议
  • 隐私协议
  • 简体中文
  • English
  • 深入

    • API 触发分析
    • 分析速度优化
    • 问题检出率提升

分析速度优化

分析速度是业务团队通常会重点关注的一项指标,业务发起代码分析会经过以下流程:

  1. 任务创建与初始化。创建任务并初始化前置数据,并加入执行队列内。

  2. 并行执行子任务。客户端节点抢占式获取分析子任务,拉取代码库,执行代码分析,分析完毕后生成任务数据并上报到服务端。

  3. 数据入库完成分析。服务端处理数据,将分析数据入库,完成分析。

当业务团队反馈分析耗时高的时候,通常我们会根据业务执行代码分析的分析进度(分析项目-分析历史-详情),具体分析耗时原因。

分析详情

1. 分析速度耗时分析

分析耗时受到诸多因素影响,经过 TCA 在腾讯内部多年实践经验总结,主要会存在以下耗时原因:

  • 受到代码库规模大小影响。代码分析存在拉取代码的过程,代码库越大,特别是一些大仓项目,其拉取代码耗时会比较高。

  • 受到代码库执行编译影响。代码分析与编译原理同宗同源,如果选择了编译型规则,配置编译命令,编译的耗时也会增加整体的执行速度。

  • 受到客户端节点机器性能影响。同上,机器的性能会严重影响执行效率,且经常容易出现 OOM,导致分析失败。特别是需要编译的项目,通常建议业务开发机配置与执行分析节点机器资源配置对等。

  • 受到客户端节点数量影响。如上图,一个代码库执行代码分析可能涉及 N 个工具,在高并发场景下短时间可能出现成百上千个子任务,而客户端节点的数量不足会导致任务排队执行,等待耗时的增加会导致代码库分析耗时升高。

  • 受到方案规则配置影响。分析方案配置至关重要,选择的工具规则越多,启用的检查项越多(如圈复杂度、重复代码、代码统计等)都有可能导致分析耗时增加。

  • 受到全量分析影响。有时候可能简单的提交一点代码,但如果每次都采用全量分析,都会对整个代码工程全部执行分析,分析耗时依旧。

  • 受到服务负载影响。在高并发的场景下,可能会出现服务负载较高,分析任务的初始化排队、数据入库排队等现象,都会导致代码库整体的分析耗时增加。

注:网络带宽、连通性等不在本文范畴内。

2. 分析速度优化策略

TCA 采用分布式云原生架构,有着灵活的分析配置,结合多年的实践经验,可以使用包括且不限于以下的优化策略。

  • 扩缩容分布式客户端节点。评估企业内部分析任务执行量以及业务高低峰,常驻一批团队节点,动态根据内部执行情况扩缩容节点;推广业务自行接入项目节点,业务研发通过 IDE 插件、本地分析或接入开发机等多种形式扩充节点资源,减少因节点资源不足导致任务排队情况。

  • 节点专机专用。可以推广业务根据各自业务需求接入不同资源配置的专机节点,不仅可以独占使用,还可以长期缓存业务代码、内置编译环境、缓存编译数据等,达到提速效果。

  • 指定分析目录。当代码库规模较大,或前后端在单一仓,特别是大仓场景,通过指定分析目录按模块拆分分析目标,减少需要分析的代码,达到提速效果。

  • 路径过滤。有一些测试文件、混淆文件等,特别是 js 这类,如果没有过滤此类文件,可能会导致分析 OOM 从而分析失败,也有可能分析耗时巨高从而发现海量的问题(十万百万级),不仅工具分析时间长,也导致数据入库时间长,从而拖慢整体的耗时。因此对一些测试文件、第三方依赖库、混淆文件等进行过滤可以达到分析提速效果。

  • 分析规则方案设计。并非规则越多检出效果越好,且规则越多涉及的工具越多执行所需耗时也是会增加的,业务需要根据实际需求设计配置规则。合适的分析规则方案策略,能够达到提速效果。

  • 减少非必要检查项。业务在实际的应用过程中,如果有些门禁指标不关注,可以减少非必要的检查项,例如仅关注代码检查则可以关闭代码度量相关配置项,如果仅关注圈复杂度则可以仅开启此项检查项,避免开启不关注的检查项导致分析耗时无谓的增加。

  • 高频增量定期全量。TCA 支持增强分析,增量分析是指针对上一个版本 Diff 内容的增量分析,通常可以针对开发分支采用增量分析,并通过 PUSH/MR 等事件触发分析,而针对主干进行定期全量分析,不仅避免增量分析可能导致的问题漏报(有些上下文的缺失会导致漏报产生,所以通过定期全量来兜底),也可以减少全部使用全量分析导致资源的紧张与分析耗时的增加。

以下是根据耗时原因对应的可参考的优化策略(包括不限于):

序号耗时原因优化策略
1受到代码库规模大小影响节点专机专用;指定分析目录;路径过滤
2受到代码库执行编译影响节点专机专用
3受到客户端节点机器性能影响节点专机专用
4受到客户端节点数量影响扩容分布式客户端节点
5受到方案规则配置影响分析规则方案设计;减少非必要检查项
6受到全量分析影响高频增量定期全量
最近更新时间: 2025/10/30 15:46
贡献者: nickctang
上一页
API 触发分析
下一页
问题检出率提升