使用用于整体项目的Spotbugs规则运行声纳扫描仪时遇到错误?

时间:2019-08-22 12:50:55

标签: java sonarqube heap-memory sonarqube-scan sonarscanner

Findbugs插件大约有449条规则。将所有这些规则应用到我现有的声纳质量参数中,并开始进行声纳扫描,这将占用大量内存来扫描整个项目,并且一段时间后还会引发错误。

我正在使用Sonarqube version: 7.5 and Spotbugs jar version: 3.9.4

Set SONAR_SCANNER_OPTS=-Xmx10G用于临时命令提示符会话,但遇到Java堆空间问题(超出了GC开销限制)

ERROR: Error during SonarQube Scanner execution
ERROR: Can not execute Findbugs
ERROR: Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
ERROR: Caused by: GC overhead limit exceeded
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.

我希望声纳扫描仪能够成功地与某些选定的Spotbugs(Findbugs)规则(例如漏洞和恶意规则)一起使用,但对于有限的规则也不起作用。

1 个答案:

答案 0 :(得分:0)

这似乎是内存资源短缺的问题。根据{{​​3}},此消息是垃圾收集器在堆内存上运行不足的结果,该异常导致抛出此异常。该链接指示您可以使用'-XX:-UseGCOverheadLimit'开关关闭此异常(该过程将继续执行,并且可能会导致性能下降)。

此外,垃圾收集的类型可能是一个问题。尝试使用'-XX:+ UseConcMarkSweepGC'或'-XX:+ UseParallelGC'更改垃圾收集器策略,然后再次运行。