предотвратите перезапись ложноположительного кубика гидролокатора

#sonarqube #static-analysis #false-positive

Вопрос:

Я отметил некоторые проблемы в своем проекте, скажем, в главной ветке, как ложноположительные на sonarqube. Теперь у меня меньше проблем, и это довольно приятно.

Мой вопрос: сохранится ли этот статус навсегда или бывают случаи, когда мои проблемы, решенные как ложноположительные, будут перезаписаны, например, когда я выполняю рефакторинг или развертываю новую ветвь функций с тем же именем снимка? Я не хочу решать одни и те же проблемы снова и снова.

Ответ №1:

Из документации:

Что делать, если я отмечу проблему «Не будет исправлена» или «Ложноположительная» в ветке?

Он будет реплицирован как таковой при создании запроса на извлечение и объединении запроса на извлечение в главную ветвь.

Если вы используете новое определение кода ссылочной ветви, проблемы в ссылочной ветви, которые происходят из ветви функций, автоматически наследуют свои атрибуты (включая разрешения «Не будет исправлено» и «Ложноположительные») из ветви функций.

Для последующего анализа статус следует сохранять, даже при рефакторинге в определенных пределах. В документации говорится:

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

  • если проблема связана с тем же правилом, с тем же номером строки и с тем же хэшем строки (но не обязательно с тем же сообщением) > СОВПАДЕНИЕ
  • определите перемещение блока внутри файла, затем, если проблема находится в той же (перемещенной) строке и в том же правиле (но не обязательно с тем же сообщением) > СОВПАДЕНИЕ
  • по тому же правилу, с тем же сообщением и с тем же хэшем строки (но не обязательно с той же строкой) > СОВПАДЕНИЕ
  • по тому же правилу, с тем же сообщением и с тем же номером строки (но не обязательно с тем же хэшем строки) > СОВПАДЕНИЕ
  • по тому же правилу и с тем же хэшем строки (но не с тем же сообщением и не с той же строкой) > СОВПАДЕНИЕ
  • есть ли совпадающая ЗАКРЫТАЯ проблема > СОПОСТАВИТЬ и снова открыть

Несопоставимые «базовые» проблемы закрываются как исправленные.

Непревзойденные «сырые» проблемы являются новыми.

В частности, при рефакторинге, если вы изменяете содержимое строки в той же строке или перемещаете строку без изменения ее содержимого, SonarQube должен соответствовать уже существующей проблеме и, следовательно, сохранять ваше решение.

Все это относится к поддержке филиалов, доступной в версии для разработчиков и выше. AFAIK нет проблем с синхронизацией между проектами.