Gradle sonarqube 插件 - 如何为 findbugs 设置内存?

Gradle sonarqube plugin - how to set memory for findbugs?

我有一个 30K 的项目模块 类。 将声纳分析从 ant 脚本迁移到 gradle 插件后,出现 OOM 错误,输出如下:

13:10:36 Out of memory
13:10:36 Total memory: 954M
13:10:36 free memory: 119M

13:10:52 Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
13:10:52 at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:163)
13:10:52 ... 109 more
13:10:52 Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
13:10:52 at

我们 运行 ant 脚本具有以下参数“-Xmx3800m -XX:ReservedCodeCacheSize=128m”

如何为 sonarqube gradle 插件设置相同的参数?

我尝试在调用 gradle

之前设置以下环境变量

GRADLE_OPTS=-Xmx3800m -XX:ReservedCodeCacheSize=128m

应用正确,但 findbugs 仍然失败并打印“总内存:954M”

我也试过添加以下属性来减少内存消耗,但没有成功

property 'sonar.skipPackageDesign', 'true'
property 'sonar.skipDesign', 'true'

Gradle版本是3.5
Sonarqube 插件版本为 2.5
jdk 版本为 8u131

检查 build.gradle 文件并如下设置 maxHeapSize,

 tasks.withType(FindBugs) {
            maxHeapSize = "1000m"
        }

您可以更改堆大小。

我意识到问题出在哪里了。
设置 GRADLE_OPTS 是正确的解决方案,但是我还使用了 gradle 守护程序,因此守护程序忽略了这些选项。 我最终通过将 -Dorg.gradle.daemon=false 添加到 GRADLE_OPTS 来禁用守护进程并且它起作用了。