Синхронизация SonarLint с SonarQube

Я прочитал все темы о том, что SonarLint не синхронизирован с SonarQube, но это просто не щелкает.

Я создал простой проект Maven для тестирования SonarLint и SonarQube. Я добавил в проект плагин sonar-maven-plugin, а затем запустил mvn sonar:sonar.

Проект был загружен в SonarQube. Когда я посмотрел в SonarQube, я увидел, что он показывает squid:S2699 (тест junit не имеет утверждения) как блокировщик.

Однако в eclipse SonarLint не показывает такой проблемы.

Я специально выбрал этот, так как это не проблема PMD/FindBugs/Checkstyle.

Я проверил, что на сервере активен squid:S2699. Очевидно, что это так, потому что SonarQube отобразил это.

Существует только 1 профиль качества: SonarWay.

Изменить: я нахожусь в подключенном режиме.

Кто-нибудь знает, почему?

Я использую:

  • Выпуск Eclipse Neon.3 (4.6.3)
  • сонар-maven-плагин 3.0.2
  • maven 3.3.9 (тот, что встроен в eclipse)
  • СонарЛинт 3.2.0.201706271328
  • SonarQube 6.3 (сборка 19869)

Вот скриншоты в доказательство.

Скриншот SonarLint

Скриншот SonarQube


person Kev    schedule 22.08.2017    source источник


Ответы (1)


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

SonarLint определяет, является ли файл тестовым или нет, на основе настройки Регулярные выражения тестового файла, которую можно найти в разделе Окно / Настройки / SonarLint. Значение по умолчанию — **/*Test.*,**/test/**/*, похоже, оно хорошо работает в широком диапазоне случаев, и, судя по вашему снимку экрана, оно должно работать и в вашем случае. Итак, прежде всего проверьте этот параметр. Если значение отличается от значения по умолчанию, я предлагаю изменить его обратно на значение по умолчанию в качестве проверки работоспособности. Затем вы можете настроить значение в соответствии с вашими потребностями.

Также полезно проверить правильность моей теории о том, что SonarLint рассматривает файл как тестовый, а не исходный, проверив Консоль SonarLint:

  • В представлении Консоль щелкните раскрывающийся список Открыть консоль и выберите Консоль SonarLint.
  • В раскрывающемся списке Настроить журналы включите Подробный вывод.
  • Запустите анализ тестового файла (внесите изменения и сохраните файл)

Вы должны увидеть такой вывод:

[
  baseDir: ...
  workDir: ...
  extraProperties: ...
  inputFiles: [
    /path/to/your/test/SonarProofTest.java [test]
  ]
]

[test] в конце имени файла указывает, что файл обрабатывается как тестовый файл. Если его там нет, то файл рассматривается как исходный файл.

person janos    schedule 23.08.2017
comment
Ага. Вот оно. К сожалению, это, вероятно, был неудачный выбор примера, потому что проблема все еще остается на некоторых нетестовых классах. Впрочем, я не буду продолжать этот вопрос. Я ценю помощь! - person Kev; 23.08.2017