she*_*rma 20 sonar-runner sonarqube
我正在使用"Findbugs"作为配置文件在Sonar上部署一个大型Java项目并获得以下错误:
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:
Java heap space
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题:
但上述两种方法对我都不起作用.
Rya*_*ton 14
我遇到了同样的问题并找到了一个非常不同的解决方案,也许是因为我很难吞下以前的答案/评论.拥有1000万行代码(比F16战斗机的代码更多),如果每行有100个字符(一个疯狂的大小),你可以将整个代码库加载到1GB的内存中.我设置了8GB的内存,但仍然失败了.为什么?
答:因为社区Sonar C++扫描程序似乎有一个错误,它会在其扩展名中选择带有字母"c"的任何文件.这包括.doc,.docx,.ipch等.因此,它耗尽内存的原因是因为它试图读取一些它认为是300mb纯代码的文件,但实际上它应该被忽略.
解决方案:查找项目中所有文件使用的扩展(请参阅此处):
dir /s /b | perl -ne 'print $1 if m/\.([^^.\\\\]+)$/' | sort -u | grep c
Run Code Online (Sandbox Code Playgroud)
然后在sonar.properties文件中将这些其他扩展名添加为排除项:
sonar.exclusions=**/*.doc,**/*.docx,**/*.ipch
Run Code Online (Sandbox Code Playgroud)
然后将内存限制恢复为常规数量.
%JAVA_EXEC% -Xmx1024m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m %SONAR_RUNNER_OPTS% ...
Run Code Online (Sandbox Code Playgroud)
seo*_*.ch 11
这对我有用:
SONAR_RUNNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m"
Run Code Online (Sandbox Code Playgroud)
我直接在声纳 - 跑步者(.bat)文件中设置它
与maven一起运行声纳时遇到了同样的问题.在我的情况下,它有助于分别调用声纳:
mvn clean install && mvn sonar:sonar
代替
mvn clean install sonar:sonar
http://docs.sonarqube.org/display/SONAR/Analyzing+with+Maven
备注:由于我的解决方案与maven连接,因此这不是问题的直接答案.但它可能会帮助其他用户填补它.
您可以做什么,首先使用一些 Findbugs 规则创建自己的质量配置文件,然后逐步添加越来越多的规则,直到遇到 OutOfMemoryError。可能只有一条规则会导致所有这些失败,因为您的代码违反了它 - 如果您停用该规则,它肯定会起作用。
| 归档时间: |
|
| 查看次数: |
46153 次 |
| 最近记录: |