Подтвердить что ты не робот

ОШИБКА - Не удалось выполнить символическое выполнение: достигнуто ограничение в 10000 шагов

С SonarQube 5.2, когда я анализирую тот же проект, что и в SonarQube 5.1.2, я вижу много таких сообщений об ошибках в журнале при анализе источников Java:

ERROR - Could not complete symbolic execution: reached limit of 10000 steps for method updateAll in class DefaultTypeDefinitions

Эти сообщения об ошибках не отображались в предыдущей версии SonarQube 5.1.2.

Однако в итоге результат анализа, по-видимому, подходит для SonarQube 5.2.

Но эти сообщения об ошибках меня тревожат. Я не понимаю, что случилось. Не могли бы вы помочь прояснить это?

4b9b3361

Ответ 1

Это сообщение об ошибке на самом деле полностью нормальное и ожидаемое, когда вы запускаете свой анализ с помощью плагина sonar-java 3.8 из-за нового механизма символического исполнения, представленного с этой версией.

(Итак, в конце это не должно быть сообщение об ошибке, а скорее что-то видимое только в режиме отладки: https://jira.sonarsource.com/browse/SONARJAVA-1406 это должно быть исправлено в следующем выпуске java-плагина).

Это безвредно для вашего анализа.

Что это значит?

Для двух правил (S2259 об исключениях nullpointer и S2583 об условиях всегда верно или false) мы используем символическое исполнение, которое исследует все возможные состояния метода для поиска проблем. Это заканчивает изучение большого графика возможных состояний (здесь это упрощено, но достаточно для объяснения).

Это исследование может быть огромным и, как таковое, имеет для него произвольный предел: 10 000 шагов. Поэтому, когда мы не можем завершить символическое исполнение, мы регистрируем это сообщение.

Конкретно: это довольно косвенный способ предупредить вас о некоторых ложных отрицаниях потенциальных об этих двух правилах этого метода.