sonar代码检查_Sonar问题解决:OutOfMemoryError: Java heap space(linux)

本文介绍了解决SonarQube在进行大规模代码扫描时出现的内存溢出问题。通过调整SonarQube的配置参数,而非sonar-scanner的设置,成功解决了OutOfMemoryError的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SonarQube是一个静态代码质量检查工具,可以检查出代码中明显或潜在问题。虽然偶尔它的判断会是错误的,但还是值得我们用。它能以比较基础的级别减少代码出错的可能,可以节省人工Review代码时间。它支持多种语言的检查。

我这里是maven项目的java代码。

今天问题的场景是:本来是使用sonar检查单个服务,使用以前文章中介绍的mvn sonar:sonar命令就可以。但服务有将近百个,这样,sonar检查完成后,在浏览器中查看结果,太费劲了。所以,改为使用sonar-scanner一次检查所有服务(方法参照以前文章)。

问题来了:OutOfMemoryError: Java heap space

00a2b71c8fa3741506d8ee605cc89129.png
图1 OutOfMemoryError: Java heap space

我尝试了两种方法,第一种没效果(搜索网络时,大部分都是用这个方法,实际没效果),你可以直接略过,使用第二种。

第一种:修改sonar-scanner中的 SONAR_SCANNER_OPTS 的值(官方推荐最好不要使用SONAR_RUNNER_OPTS 参数,会报warning)

cd  /sonar-scanner-2.8/bin/ # 进入sonar-scanner目录
vi  sonar-scanner   # 编辑文件,在文件中追加如下一行内容
export SONAR_SCANNER_OPTS="-Xms1024m -Xmx3036m -XX:MaxPermSize=1024m -XX:ReservedCodeCacheSize=1024m"
ctrl + c      # 退出编辑文件
:wq!          # 保存文件 

修改后,使用sonar-scanner检查代码。问题依然存在。查看问题的图如下(如果你会查看错误,请略过):

0623ac9c69a4ddf7af5dec43547a3eed.png
图2 浏览器中查看刚sonar检查过的项目

177f435a913affe86a2c91aaf88140cf.png
图3 点击图2中项目名称显示分析失败

4d3a85b7a722bbaa33601ebad9aaef14.png
图4 查看详细错误步骤

571751ca7f31a26833cc26a120965f55.png
图5 点击图4菜单后

e76ae5189f7fff02f8a2eb1fa7a5aef7.png
图6 点击图4菜单后

00a2b71c8fa3741506d8ee605cc89129.png
图7 错误信息

第二种:修改sonarqube的参数

cd /sonarqube-6.7.5/conf/   # 进入sonarqube目录
vi sonar.properties         # 编辑文件,在文件中把下面一行前面的 # 删掉,把参数修改大些,我直接用3G
sonar.ce.javaOpts=-Xmx3036m -Xms1024m -XX:+HeapDumpOnOutOfMemoryError
# 参数说明:Xmx:应用可用的最大内存数   Xms:应用初始化内存数
ctrl + c      # 退出编辑文件
:wq!          # 保存文件 

重启sonarqube

cd /sonarqube-6.7.5/bin/linux-x86-64/
./sonar.sh restart

使用sonar-scanner检查代码,问题解决。

63a876caa052fce14c87044b863be88e.png
图8 sonar检查成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值