SonarQube и SonarLint разница

89

Чем именно SonarQube отличается от SonarLint? SonarQube имеет связанный с ним сервер, и Sonar lint работает больше как плагин. Но в чем их конкретная разница?

Дживан Варугезе
источник

Ответы:

131

SonarLint живет только в IDE (IntelliJ, Eclipse и Visual Studio). Его цель - обеспечить мгновенную обратную связь при вводе кода. Для этого он концентрируется на том, какой код вы добавляете или обновляете.

SonarQube - это центральный сервер, который обрабатывает полный анализ (запускаемый различными сканерами SonarQube). Его цель - дать 360-градусное представление о качестве вашей кодовой базы. Для этого он регулярно анализирует все исходные строки вашего проекта.

И SonarLint, и SonarQube используют одни и те же статические анализаторы исходного кода, большинство из которых написано с использованием технологии SonarSource.

Фабрис - Команда SonarSource
источник
Спасибо @Fabrice! Но еще один вопрос. Я обнаружил разницу в отчетах для сонара и линта сонара для одной и той же версии базы кода. Это была первоначальная проблема, которая побудила меня написать этот вопрос. В чем может быть проблема?
Дживан Варугезе,
7
Вы должны «подключить» SonarLint к SonarQube и привязать ваш локальный проект (в IDE) к удаленному (в SonarQube), чтобы убедиться, что вы используете одинаковые профили качества (= наборы правил) в обоих мирах.
Фабрис - Команда SonarSource
Спасибо, Фабрис. Это также может означать, что разные версии могут давать разные наборы правил, верно? Как будто может быть разница между отчетами v5.6 и v6.0 для одной и той же версии базы кода.
Дживан Варугезе,
1
Вы можете найти это интересным; эта статья помогла мне понять разницу между 3 различными режимами запуска SonarQube: анализ (кто создает отчет в пользовательском интерфейсе SonarQube), предварительный просмотр и инкрементный (используется SonarLint). blog.sonarsource.com/…
YB Cause
23

Следует добавить, что SonarQube также выполняет сканирование с помощью сторонних анализаторов (findBugs, checkstyle, PMD), тогда как SonarLint их не включает. Я думаю, причина в приоритете производительности и поиске ошибок, основанных на байт-коде java.

Таким образом, ваши результаты в SonarQube и SonarLint могут отличаться, если в базовом профиле качества используются сторонние сканеры.

гитарист
источник
2
Вы правы, @guitarlum, и основная причина не в той, которую вы упомянули, а в том, что мы искренне верим, что SonarJava (анализатор Java, разработанный SonarSource) полностью перевешивает PMD + Findbugs.
Фабрис - Команда SonarSource
3
@ Fabrice-SonarSourceTeam Я понимаю ваши рассуждения и, возможно, это верно для дефолтных FindBugs и PMD, однако в области безопасности приложений, а именно FindSecurityBugs ( find-sec-bugs.github.io ), что, на мой взгляд, является лучшим сканированием уязвимостей SonarJava не оправдывает ожиданий.
guitarlum
4

SonarQube - это сервер, на котором вы можете размещать свои проекты и выполнять анализ, а SonarLint - это агент, который позволяет нам подключаться к этому SonarQube и выполнять анализ удаленно. SonarLint можно использовать с IDE или запускать с помощью команд интерфейса командной строки.

SonarLint содержит собственный набор правил по умолчанию, но при подключении к SonarQube пользователи могут импортировать правила из SonarQube, которые на самом деле являются чем-то большим, чем просто стандартный набор правил. Мы можем интегрировать PDM, CodeStyle и многие другие средства проверки в SonarQube и создавать собственные правила.

Я хочу упомянуть два факта, которые я усвоил на собственном опыте: SonarLint не наследует эти настраиваемые правила от SonarQube, во-вторых, Sonar не работает с тестовыми классами.

юг
источник
0

Sonarqube выполняет проверку правил на сервере. Мы интегрировали его в наши сборки TFS. SonarLint работает в среде IDE, поэтому, прежде чем я зафиксирую свой код, я знаю, какие строки нарушают правила внутри IDE.

Джефф Шрайб
источник
Вопрос был в том, чем сканеры отличаются? Ваш ответ является предпосылкой вопроса. Сервер и плагины уже упомянуты в вопросе.
Дживан