腾讯云代码分析腾讯云代码分析
指南
API
  • IDE

    • Visual Studio Code TCA 插件
    • JetBrains IDEs TCA 插件
  • CNB

    • CNB TCA 插件
    • CNB TCA 徽章
  • Jenkins

    • Jenkins TCA 插件
  • MCP

    • TCA MCP 服务器
  • 深入

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

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

    • Visual Studio Code TCA 插件
    • JetBrains IDEs TCA 插件
  • CNB

    • CNB TCA 插件
    • CNB TCA 徽章
  • Jenkins

    • Jenkins TCA 插件
  • MCP

    • TCA MCP 服务器
  • 深入

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

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

    • 产品介绍
    • 快速开始
    • 权限配置
    • 仓库配置
    • 分析方案
    • 分析项目
    • 组件分析
    • 节点管理
    • 增强分析
    • AI 助手
    • 插件配置
    • 工具规则
    • 常见问题
    • 词汇表

分析方案

分析方案又称分析配置方案,分析项目启动分析时,会下发分析方案的配置内容执行分析。

提示

按类型划分,分析方案分为:代码库方案、制品库方案。

  • 代码库方案:用于代码库、源码包分析。

  • 制品库方案:用于制品库分析。

按层级划分,分析方案分为:平台方案、团队方案、项目方案。

  • 平台方案:由平台提供的分析方案,用户无法变更该方案配置,使用平台公共节点资源执行分析。

  • 团队方案:团队层级分析方案,可以供团队内各个仓库使用,仅具有该权限的用户可以创建/变更,使用团队节点资源执行分析。

  • 项目方案:项目层级分析方案,可以供项目内各个仓库使用,仅具有该权限的用户可以创建/变更,使用团队后项目节点资源执行分析。

功能模块代码库方案制品库方案
基础配置✅✅
规则配置✅❌
度量配置✅❌
组件分析配置✅✅
质量门禁✅❌
权限配置✅✅
关联项目✅✅
数据统计✅❌
操作记录✅✅

基础配置

功能模块代码库方案制品库方案
基础配置✅✅

可配置分析方案名称、描述、节点池等配置,以及可以将方案废弃。

节点池:用于将任务分配到指定的环境节点机器上执行代码分析,需考虑项目在对应环境的节点机器上能否正常执行。

环境变量配置

提示

  • 仅代码库方案适用。

  • 每行 key-value 形式,非必填项。

  • 可用于配置节点编译环境:假设执行节点具有多个 JDK 或者 gradle 环境,则可以通过设定相应环境变量指定项目编译所需的 JDK 或 gradle 版本。

  • 可用于设置分析工具参数: 部分工具支持通过配置环境变量,设置工具部分运行参数。

    • Eslint:例如在前端项目中,用到 eslint 工具执行分析时,经常会遇到 js 内存溢出问题,则可以通过设定环境变量(如 ESLINT_MAX_OLD_SPACE_SIZE=4096)来调整 js 内存大小。

    • Pylint:可以指定代码库中的文件作为分析配置文件。假设 xxx 为配置文件相对于代码库根目录的文件路径,例如配置文件 pylintrc 在 config 目录下,则可以通过设定环境变量(如PYLINT_CONFIG_FILE=config/pylintrc)来指定该文件作为分析配置文件。

    • Flake8:可以指定代码库中的文件作为分析配置文件。假设 xxx 为配置文件相对于代码库根目录的文件路径,则可以通过设定环境变量(如FLAKE8_CONFIG_FILE=xxx)来指定该文件作为分析配置文件。

    • homecheck: 可以通过环境变量OHOS_SDK指定节点OpenHarmony SDK路径和环境变量HMS_SDK指定节点HarmonyOS SDK路径(比如DevEco Studio安装目录下的sdk/default/openharmony/ets,请使用绝对路径)。

  • 可用于设置 Python 版本:如PYTHON_VERSION=2 指定为 python2 项目。

    提示

    对 Python 项目的分析默认采用 Python3,如果需要分析 Python2 项目,请在环境变量中设置:PYTHON_VERSION=2

    方案环境变量配置

规则配置

功能模块代码库方案制品库方案
规则配置✅❌

腾讯云代码分析采用业界/自研的 80+ 款工具,配置代码检查项能够有效地发现代码中存在的异味代码。

规则包配置

规则包主要由官方规则包和自定义规则包构成。

  • 官方规则包:是由腾讯云代码分析平台经过多年深耕,在业务中不断实践整理而出的规则集合包,平台有超过10000+的规则,有些规则并未放到官方规则包中,有些规则是由用户自定义的,业务团队需要根据实际需求目标挑选或调整官方规则包。

  • 自定义规则包:可以根据业务需求到工具规则库中添加规则,或调整官方规则包内规则。

用户可根据项目语言、规则包类型筛选不同的规则包,并启用/关闭规则包,此外也可以在自定义规则包内新增/变更规则。

  • 添加规则: 用户可以点击 添加规则 或进入自定义规则包内点击 添加规则 等方式进行工具规则的阅览及添加。

  • 调整规则包规则: 用户可以点击进入对应的规则包内,查阅或调整规则。

重要

  • 在官方规则包中对规则的任意操作,实质上是将对应规则的调整增加到自定义规则包中。

  • 自定义规则包中的规则配置会覆盖其他官方包中相同规则的配置。

  • 无论添加规则还是调整规则包规则,最终都是将规则添加到自定义规则包中。

添加规则01

添加规则02

编译配置

支持给编译类的工具或编译型项目配置相关命令。对于编译型语言,有些分析工具是可以通过分析编译产出的中间文件,更为准确地发现代码质量问题。

提示

由于对代码进行编译型分析会存在安全风险,需要用户自行接入专机节点执行分析。此外,编译环境和编译工具仅提供试用,请在专机节点上自行安装和维护项目所需编译环境和工具。更多请查阅 专机接入指引。

编译配置

编译所需环境说明(重要)

由于代码分析是在客户端节点上执行,如果配置了编译命令,则该节点需要内置所需的编译环境,否则执行分析会出现没有编译环境的错误。即需要用户在专机上提供编译环境(针对私有化版,客户可根据业务情况选择在公共节点机、用户专机、本地节点机提供编译环境即可)。

如以下一些编译环境:

  • JDK 环境及版本

  • gradle 环境

  • cmake & make 环境

  • visual studio 环境

  • ...

提示

  • 如果机器有多个 JDK 或者 gradle 环境,项目编译需指定 JDK 或 gradle 版本,可以在分析方案的基础配置中设定相应环境变量。
  • 咨询该代码库所属项目的开发,先确保先在本地工程根目录调试通过!
编译配置字段说明
  • 前置命令

    通常是项目编译前需要执行的命令,或用于清理之前编译过程的命令,如:make clean, xcodebuild clean [-optionName]。如无需要,可以不填。

  • 编译命令

    项目的编译命令,具体可以咨询该代码库所属项目的开发。能够使项目编译成功的编译命令,可以填写多行或用 && 连接命令。

提示

前置命令与编译命令是隔离的,即在前置命令中的操作不会对编译命令产生影响。 如在前置命令中 cd src && export TEST=src,在执行编译命令时并不会跳到src目录和获取TEST环境变量。

JAVA 项目示例

编译命令:

请先确保先在本地工程根目录调试通过!!!

android-studio 项目编译命令示例

gradle compileDebugSources --no-daemon -Dorg.gradle.jvmargs=

ant 项目编译命令示例

ant build
Object-C 项目示例

编译命令:

请先确保先在本地工程根目录调试通过!!!

xcodebuild 编译命令示例

xcodebuild -target dailybuildipa -configuration DailyBuild -sdk iphonesimulator

环境变量:

# 分析方案-基础属性中配置
XCODE_VERISON=10.1
C/C++ 项目示例

编译命令:

请先确保先在本地工程根目录调试通过!!!

VS 项目编译命令示例

devenv.com demo.sln /Build "Debug|Win32"
# 或
msbuild demo.sln /t:Build /p:Configuration=DebugCopy

make 项目编译命令示例

make all
C# 项目示例

编译命令:

请先确保先在本地工程根目录调试通过!!!

VS 项目编译命令示例

devenv.com demo.sln /Build "Debug|Win32"
# 或
msbuild demo.sln /t:Build /p:Configuration=Debug

度量配置

功能模块代码库方案制品库方案
度量配置✅❌
  • 圈复杂度:可以发现执行路径较多的方法,降低代码的圈复杂度,可测性更高。

    • 支持语言:目前仅支持 C、C++、C#、Java、JavaScript、Objective-C、Go、Python、PHP、Swift、Ruby、Scala、Lua 共 13 种语言。

    • 检测阈值:默认为 20,表示当一个方法的圈复杂度超过 20 时则认为该方法为超标方法,需要被关注修改。可以根据业务需要进行调整。

  • 重复代码:可以发现重复的代码,避免重复代码可以让代码更简洁,更易维护。

    • 支持语言:目前仅支持 C、C++、C#、Java、JavaScript、Objective-C、Go、Python、PHP、Swift、Ruby、Scala、Lua、Kotlin 共 14 种语言。

    • 长度区间:是一个区间值,默认代码中一个单词(变量/操作符)长度为 1。

    • 重复次数:是一个区间值,当一段代码重复次数达到指定区间才认为是有风险的。

    • 上报限制:限制上报的重复代码块数,可以减少开发的压力,提高修复积极性。

  • 代码统计:从目录和业务纬度统计代码行数,也可以获取提交记录便于代码 Review。

组件分析配置

功能模块代码库方案制品库方案
组件分析配置✅✅

质量门禁

功能模块代码库方案制品库方案
质量门禁✅❌

质量门禁通常搭配 CICD 流水线或代码库的合并请求事件来进行使用:

  • 在 CICD 流水线中使用:将代码分析置于流水线中,当执行代码分析后会输出门禁结果数据,根据门禁结果数据通过/拦截流水线。

  • 在代码库合并请求中使用:在代码库发起合并请求时,触发执行代码分析,并根据门禁结果数据通过/拦截代码库合并。参考管控合并请求。

提示

结合团队业务需求目标配置门禁指标。例如通常建议严重、错误问题数 <=0

添加质量门禁

管控合并请求

重要

  • 仅使用 OAuth 凭证授权的代码库支持合流管控功能。
  • 对于同一个目标分支,仅支持配置一个分析方案管控合并请求。

按照以下步骤配置,完成合流门禁管控:代码库创建合并请求时会触发执行代码分析,业务研发在发起代码库合并请求(MR/PR)时,触发执行代码分析,通过分析合并请求的源分支代码,并对比目标分支代码,分析出增量代码存在的问题,只有增量代码符合质量标准(问题清零)后,才允许合入目标分支。

  • 步骤1: 在分析方案中启用质量门禁功能,添加需要的门禁指标。

  • 步骤2: 针对代码库进行分析配置-触发配置,选择目标分支和已配置质量门禁的分析方案,配置 合并请求触发、管控合并请求 即可。

    triggercnf

提示

在合并请求列表页可以查看被阻塞的合并请求对应的分析任务,并支持强行取消阻塞。

权限配置

功能模块代码库方案制品库方案
权限配置✅✅

可以额外配置方案的权限以及可见范围。

关联项目

功能模块代码库方案制品库方案
关联项目✅✅

可以查看当前分析方案关联的分析项目列表。

数据统计

功能模块代码库方案制品库方案
数据统计✅❌

与分析方案维度相关的数据统计功能。

项目统计

统计使用该方案执行过的分析项目最新的概览数据,可用于观测指定分析方案下的项目数据。

scheme_projectstat_01

scheme_projectstat_02

规则统计

统计使用该方案配置的规则在应用过程中的概览数据,可用于观测指定分析方案下的规则统计数据,了解规则使用情况,灵活的调整方案规则配置。

scheme_rulestat_01

scheme_rulestat_02

操作记录

功能模块代码库方案制品库方案
操作记录✅✅

可以查看分析方案的操作日志。

最近更新时间: 2025/12/30 13:08
贡献者: nickctang, cunlanluo, albertjdhu
上一页
仓库配置
下一页
分析项目