Возникает ошибка при запуске сканера сонара с правилами Spotbugs для монолитного проекта?

Плагин Findbugs содержит около 449 правил. Применив все эти правила к моему существующему профилю качества сонара, я начал сканирование сонара, которое требует много памяти для сканирования всего проекта, а также через некоторое время выдает ошибку.

Я использую Sonarqube version: 7.5 and Spotbugs jar version: 3.9.4

Set SONAR_SCANNER_OPTS=-Xmx10G для сеанса временной командной строки, но столкнулся с проблемой с пространством кучи Java (превышение лимита накладных расходов GC)

ERROR: Error during SonarQube Scanner execution
ERROR: Can not execute Findbugs
ERROR: Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
ERROR: Caused by: GC overhead limit exceeded
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.

Я ожидаю, что сонарный сканер будет успешно работать с некоторыми выбранными правилами Spotbugs (Findbugs), такими как уязвимости и вредоносные правила, но он также не работал для ограниченного правила.


person Jayveer    schedule 22.08.2019    source источник
comment
Пробовали ли вы сначала использовать минимальный набор и приложение? Все еще проблемы с памятью? Это также имеет место, когда не установлены Spotbugs?   -  person Jeroen Heier    schedule 22.08.2019
comment
Эй Jeroen, Спасибо за ваш ответ. После интеграции спотбагов мы выбрали несколько случайных java-файлов из проекта и запустили сканирование. Сканирование было успешным, если мы включили около 1400 файлов, но если это число выше, сканирование завершилось неудачно из-за проблем с памятью. Мы попытались запустить сканирование без установки программных ошибок, и приложение работало нормально.   -  person Jayveer    schedule 26.08.2019
comment
выпуск jar содержит ошибки 3.1.12. Документацию можно найти здесь. В разделе требований вы можете прочитать: Для использования SpotBugs у вас должно быть не менее 512 МБ памяти. Для анализа очень больших проектов может потребоваться больше памяти. а также: Поддержка Java 11 и новее пока экспериментальная. Глядя на ваш последний комментарий, эта проблема, вероятно, связана с SpotBug, а не с SonarQube.   -  person Jeroen Heier    schedule 26.08.2019


Ответы (1)


Это похоже на проблему нехватки ресурсов памяти. Согласно: Руководству Oracle по устранению неполадок с утечками памяти, это сообщение является результатом того, что сборщику мусора не хватает памяти в куче, что приводит к возникновению этого исключения. Ссылка указывает, что вы можете отключить это исключение с помощью переключателя «-XX:-UseGCOverheadLimit» (и процесс будет продолжать выполняться с потенциальным снижением производительности).

Кроме того, проблемой может быть тип сборки мусора. Попробуйте изменить политику сборщика мусора с помощью «-XX:+UseConcMarkSweepGC» или «-XX:+UseParallelGC» и снова запустить ее.

person Slartibartfast    schedule 27.08.2019