2016-01-06 3 views
1

Я пытаюсь отсканировать исходный код, особенно некоторые исходные файлы Java, которые не работают с 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 среды или б) как найти конкретный файл, который вызывает ошибку первое место, чтобы можно было: 1) исключить его, 2) удалить его или 3) выяснить способ смягчения проблемы, чтобы проверка могла завершиться успешно.

Мои вопросы:

  1. Как узнать, какой конкретный файл вызывает ошибку, StackOverflowError в этом случае
  2. Как установить переменную «SONAR_RUNNER_OPTS» на операционной системе Linux

Я попытался отладить проблему в сонарнике с помощью переключателей -X и -e соответственно. Для проведения анализа я использую следующую команду: sonar-runner -X -Dsonar.properties=sonar-project.properties &> debug_dump.txt или sonar-runner -e -Dsonar.properties=sonar-project.properties &> dump.txt. Однако это не помогло.

Кстати, я использую сонар-бегун-2.4.

Чтобы установить переменные окружения SONAR_RUNNER_OPTS я пошел к .bash_profile в моем $ HOME папке и поместить эту запись в нем: SONAR_RUNNER_OPTS=" -Xss1600k" Будет ли это на самом деле увеличить стек-размер для гидролокатора бегуна? Кроме того, мне нужно перезагрузить операционную систему или произойдет ли изменение в следующем сканировании?

Спасибо, что прочитали это сообщение.

+0

Можете ли вы уточнить, какую версию sonarqube вы используете? также какая версия плагина sonar-java установлена ​​на вашем сервере? и, наконец, вы можете поделиться всей трассировкой стека, которая вызывает ошибку stackoverflow? Это действительно поможет определить проблему. – benzonico

+0

* «Мне нужно перезагрузить операционную систему, или изменение вступит в силу при следующем сканировании» * - просто выполните команду '. .bash_profile' для его выполнения. –

+0

@GergelyBacso Что значит? Не будет ли «сонар-бегун» отображать переменную среды из профиля? Кроме того, команда, которую вы предлагаете '..bash_profile'? Я не думаю, что скрытый файл .bash_profile в любом случае является исполняемым файлом ... Возможно, я совершенно ничего не знаю, поэтому, пожалуйста, помогите мне разобраться. : D – user3870315

ответ

1

Учитывая то, что вы уточнены в комментариях, это звучит, как вы столкнулись с этой ошибкой: https://jira.sonarsource.com/browse/SONARJAVA-1346

Как показаны в JIRA билете был зафиксирован в 3.9. Поэтому вы должны перейти на эту версию (и, возможно, обновить SonarQube до последней версии LTS (4.5.6, если я не ошибаюсь)). Обходным решением было бы отключить правило S2695 во время ожидания обновления.

Смежные вопросы