java - 使用单体项目的 Spotbugs 规则运行声纳扫描仪时出错?
问题描述
Findbugs 插件有大约 449 条规则。将所有这些规则应用到我现有的 sonarqube 质量配置文件中并开始声纳扫描,这需要大量内存来扫描整个项目,并且在一段时间后它会抛出错误。
我在用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) 规则,如漏洞和恶意规则,但它也不适用于有限规则。
解决方案
这似乎是一个内存资源不足的问题。根据:Oracle's Troubleshooting Guide on Memory Leaks,此消息是垃圾收集器在堆内存上运行不足导致抛出此异常的结果。该链接表明您可以使用“-XX:-UseGCOverheadLimit”开关关闭此异常(并且该过程将继续执行,但可能会降低性能)。
此外,垃圾收集的类型可能是一个问题。尝试使用“-XX:+UseConcMarkSweepGC”或“-XX:+UseParallelGC”更改垃圾收集器策略并再次运行它。
推荐阅读
- akka-http - 在 akka-http 中,如何将路径段与可选的结束斜杠匹配?
- asp.net - 在 ASP.NET Core 应用程序中使用 Vue 切换
- ssl - cURL 错误 60:SSL 证书问题:证书已过期
- javascript - 显示/隐藏密码 onClick 使用 Vanilla js
- lwc - Lightning Web 组件反应性和非反应性属性
- r - r中数据框列表的总和行
- python - 基于 PySpark 数据帧中的相同列表更新多个列
- discord.py - 我如何做到这一点,以便我的机器人在 discord.py rewrite 中有 3 个警告时自动踢人
- python-3.x - 使用 pathlib 模块从 rglob() 方法的输出中解压缩所有项目
- javascript - 设置状态不起作用反应钩子(字符串)异步存储