Как совместить работу linter и Sonar

Ответ

Для совмещения ESLint и SonarQube можно использовать плагин eslint-plugin-sonarjs. Он добавляет правила из SonarQube в ESLint, что позволяет находить проблемы на этапе разработки.

Пример настройки .eslintrc.js:

module.exports = {
  plugins: ['sonarjs'],
  extends: ['plugin:sonarjs/recommended'],
  rules: {
    'sonarjs/no-duplicate-string': 'error',
    'sonarjs/no-identical-functions': 'warn'
  }
};

Также можно настроить интеграцию через CI/CD:

  1. Запускать ESLint перед сборкой
  2. Использовать SonarScanner для анализа кода после успешной сборки
  3. Настроить общие правила качества в обоих инструментах

Важно синхронизировать правила между ESLint и SonarQube, чтобы избежать конфликтов.

Ответ 18+ 🔞

Ах ты ж ёпта, ну и тема у нас сегодня, про эту вашу магию совмещения ESLint и SonarQube! Слушай, как будто два упрямых мужика в одной бане — одного надо уговорить не лить воду на каменку, а другого — чтобы веником не по роже бил.

Так вот, есть такой спасительный плагин — eslint-plugin-sonarjs. Это как переводчик между двумя племенами, блядь. Он берёт все эти умные правила из SonarQube про «дублирование строк» и «одинаковые функции» и превращает их в команды для ESLint. Чисто технически — овердохуище удобно.

Смотри, как это в конфиге .eslintrc.js выглядит, не выдумывай велосипед:

module.exports = {
  plugins: ['sonarjs'],
  extends: ['plugin:sonarjs/recommended'],
  rules: {
    'sonarjs/no-duplicate-string': 'error',
    'sonarjs/no-identical-functions': 'warn'
  }
};

Вот, код не трогаю, как договаривались. Всё честно.

А дальше, чувак, начинается цирк с CI/CD. Представь: ты написал код, а у тебя в пайплайне сидит такой злой гном с двумя дубинками.

  1. Первым делом ESLint лупит по пальцам: «Ага, братан, тут у тебя строка повторяется, я тебе щас ошибку влеплю!».
  2. Если сборка прошла и ты не обосрался — выпускают SonarScanner, который уже смотрит глубже, в саму душу проекта, ищет эти «запахи кода», блядь. Мудя, звучит как парфюмерная экспертиза.
  3. И главное, ёпта, — правила надо синхронизировать! А то получится как в том анекдоте: один говорит «не матерись», а второй ему — «да похуй», и начинается конфликт интерпретаций, пиздец.

Короче, смысл в том, чтобы ловить говнецо ещё до того, как оно уплывёт в основную ветку. А то потом разгребать — волнение ебать, терпения ноль ебать. Всё, вопрос исчерпан, как Муму в том самом мешке.