SonarQube因java.lang.StackOverflowError失败 - 如何确定导致错误的特定文件

时间:2016-01-06 21:23:36

标签: java linux sonarqube

我正在尝试扫描一些源代码,特别是某些Java源文件,它们失败了java.lang.StackOverflowError。我用我最喜欢的搜索引擎谷歌研究了一些,并找到了一些可能的解决方案。

我找到的最佳解决方案是:http://sonarqube-archive.15.x6.nabble.com/StackOverflowException-on-JAVA-AST-analysis-SonarQube-4-5-1-with-java-plugin-2-6-td5030537.html

然而,该解决方案没有明确说明如何a)设置 SONAR_RUNNER_OPTS 环境变量或b)如何找到导致错误的特定文件,因此可以1)排除它,2)删除它,或3)找出一些方法来缓解问题,以便扫描可以成功完成。

我的问题是:

  1. 如何找出导致错误的特定文件,在这种情况下 StackOverflowError
  2. 如何在Linux操作系统上设置'SONAR_RUNNER_OPTS'变量
  3. 我试图分别使用-X和-e开关调试sonar-runner中的问题。要运行分析,请使用以下命令: sonar-runner -X -Dsonar.properties=sonar-project.properties &> debug_dump.txtsonar-runner -e -Dsonar.properties=sonar-project.properties &> dump.txt。但这并没有帮助。

    顺便说一句,我正在使用 sonar-runner-2.4

    要设置环境变量SONAR_RUNNER_OPTS,我转到我的$ HOME文件夹中的.bash_profile并将此条目放入其中:SONAR_RUNNER_OPTS=" -Xss1600k"这实际上会增加声纳 - 跑步者的堆栈大小此外,我是否需要重新启动操作系统,或者更改是否会在下次扫描时生效?

    感谢您阅读本文。

1 个答案:

答案 0 :(得分:1)

考虑到你在评论中的准确性,听起来你遇到了这个错误:https://jira.sonarsource.com/browse/SONARJAVA-1346

如jira票证所示,它已在3.9中修复。所以你应该升级到那个版本(因此可能会将SonarQube升级到最新的LTS版本(4.5.6如果我没有误会))。解决方法是在等待升级时停用规则S2695。