Ошибка сканирования Sonarqube с линией вне диапазона?
[07:43:57]W: [Шаг 1/1] ОШИБКА: Ошибка при выполнении сканера SonarQube
[07:43:57]W: [Шаг 1/1] ОШИБКА: строка 523 находится вне диапазона в файле src/main/java/com/company/package/File.java (строки: 522)
По какой-то причине Sonarqube сообщает об ошибке в строке 523, но в исходном файле только 522 строки?
Я видел это в предыдущем файле, но когда я добавил пустую строку в конце, проблема исчезла, этот файл уже имеет пустую строку в конце.
11 ответов
У меня была такая же проблема при использовании плагинов Sonar Maven и отчетов о тестировании Jacoco. mvn sonar:sonar
основывается на существующем отчете jacoco, когда исходный код был изменен (строки были удалены), но отчет о проверке не был обновлен, произошла эта ошибка. Бег mvn clean test sonar:sonar
решил это.
Та же самая проблема происходит и в коде Python. Я получил это решено добавив пустую строку в конце файла.
Для меня это было потому, что у меня был точно такой же класс (например, com.test.MyClass
) имя и имя пакета в двух разных подмодулях (maven), MyClass
в первом модуле больше, т.е. 120 строк кода. MyClass
во втором модуле короче, тогда исключение было сгенерировано начиная с JaCoCo, хотя отчет был для этого.
Решением было переименовать один из классов или переместить его в другой пакет.
т.е.com.test.MyClass
а такжеcom.test.MyClassB
ИЛИ ЖЕ:
com.test.MyClass
а такжеcom.test.foo.MyClass
Для Azure DevOps вам может потребоваться убедиться, что ваша сборка очищает исходные коды перед началом сборки.
У нас была такая же проблема с нашим AspNET-Core-Project.
Затем мы увидели, что у нас были сбои при тестировании, которые, к сожалению, не привели к сбою нашей Jenkins-Job. Вместо этого sonarqube, проанализировав тесты и покрытие, выдал ошибку.
Как только тесты были исправлены, все снова заработало.
Я получил ту же ошибку с Azure DevOps Pipelines, но перед созданием решения для
sources and output
сделал свою работу.
Теперь все снова работает нормально.
В моем случае проект iOS, написанный на Swift, должен был удалить предыдущие отчеты. Просто удалите папку с отчетами сонара.
Основные причины этой проблемы: -
- Да, эта проблема возникает, когда в репозитории есть недавние изменения, но вы не используете обновленное изображение в файле yaml, и эта ошибка всегда будет отображаться в последнем зафиксированном файле в репо.
например -docker run -dt --name ${{variables.containerName}} ${{variables.tempimage}} /bin / bash
В приведенной выше команде мы вызываем containerName, а затем используем некоторое временное изображение, поэтому, если это временное изображение обновлено (означает, что указывает на последнее репо), только вы сможете решить эту проблему, если у нас есть несоответствие в репо на sonarqube и в файл yaml, тогда мы получим эту проблему.
Чтобы получить последний образ, мы можем использовать Team_image_builder внутри файла yaml, и если мы удалим последний зафиксированный файл из репозитория, тогда эта проблема не возникнет, потому что тогда разница между обеими сторонами будет равна нулю.
Если выполнение maven clean не работает, проверьте, есть ли у вас папка старого проекта, которую нужно очистить. Как только вы удалите подмодуль из maven pom, он не удалит папку, включающую каталог /target с отчетом jacoco много лет назад.
Удалите отчеты о покрытии из предыдущего запуска перед повторным запуском.