2016-01-06 30 views
1

我正在嘗試掃描一些源代碼,尤其是一些源代碼文件,其失敗的原因是java.lang.StackOverflowError。我用我最喜歡的搜索引擎Google來研究這個問題,並找到了一些可能的解決方案。SonarQube因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

該解決方案但並未明確如何將)設置SONAR_RUNNER_OPTS環境變量或b)如何找到導致錯誤的特定文件地址第一,所以人們可以1)排除它,2)刪除它,或3)找出一些方法來減輕問題,使掃描可以成功完成。

我的問題是:

  1. 如何找出哪些特定的文件引起的錯誤,的StackOverflowError在這種情況下
  2. 如何設置「SONAR_RUNNER_OPTS」變量在Linux操作系統

我試圖用-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我去的.bash_profile在我的$ HOME文件夾,並把它添加此項:SONAR_RUNNER_OPTS=" -Xss1600k"請問這實際上增加堆棧大小爲聲納亞軍另外,我是否需要重新啓動操作系統,或者更改是否會在下次掃描時生效?

感謝您閱讀本文。

+0

你能確定你正在使用哪個版本的sonarqube?還有哪個版本的sonar-java插件安裝在你的服務器上?最後你可以分享導致stackoverflow錯誤的整個堆棧跟蹤?這確實有助於查明問題。 – benzonico

+0

*「我需要重新啓動操作系統還是更改會在下次掃描時生效」 - 只需執行一個操作。 .bash_profile'來執行它。 –

+0

@GergelyBacso你是什麼意思? 'sonar-runner'會不會從配置文件中獲取環境變量?另外,你正在建議'..bash_profile'命令?我不認爲隱藏文件.bash_profile是一個可執行文件無論如何...也許我完全無知的東西,所以請幫助我理解。 :D – user3870315

回答

1

給你的意見是什麼一種高精度,它聽起來就像你遇到這個錯誤:https://jira.sonarsource.com/browse/SONARJAVA-1346

正如它已被固定在3.9 JIRA票上。所以你應該升級到那個版本(並且可能將SonarQube升級到最新的LTS版本(如果我沒有錯誤的話,4.5.6))。解決方法是在等待升級時取消激活規則S2695。

相關問題