更新时间:2026-07-13 GMT+08:00

内存不够,导致检查失败

问题现象

错误码为CC.00040010.400。

日志里有显示“Channel "unknown" : channel is already closed”

原因分析

代码量过大,引擎检查时执行机内存不够用。

处理方法

如果是 JAVASCRIPT/TYPESCRIPT/CSS 语言扫描,且日志中包含 "ERROR The analysis will stop due to the Node.js process running out of memory (heap size limit xxxx MB)",可通过以下方式。

  • "xxxx" 表明默认的堆内存限制,此时可以在代码仓的根目录新增一个名为 "sonar-project.properties" 的文件,并写入内容 "sonar.javascript.node.maxspace=8192",表示将默认的堆内存限制改为 8个G。(不一定必须是8G,视具体情况而定,只要值比 "xxxx" 大即可。)

减少单个代码检查任务的代码扫描量,可通过以下3种方式。

  • 将报错的代码检查任务拆分多个任务,并在拆分的任务中分别设置不同语言的规则集。设置规则集可参考设置规则集

    例如:报错的代码检查任务A中有多种语言的代码,Java、C、C#,则可以将任务A拆分为任务A1、任务A2和任务A3,其中A1使用Java语言的规则集扫描,A2使用C语言的规则扫描,A3使用C#语言的规则集扫描。

  • 将报错的代码检查任务拆分多个任务,并在拆分的任务中,分别排除部分文件后进行扫描。设置排除文件可参考设置检查模式

    例如:将报错的代码检查任务A拆分为任务A1、任务A2和任务A3,其中A1扫描第1个文件,排除第2个和第3个文件,A2扫描第2个文件,排除第1个和第3个文件,A3扫描第3个文件,排除第1个和第2个文件。

  • 将报错的代码检查任务使用的代码仓拆分成多个子仓分别创建代码检查任务进行扫描。