Настройка SonarQube для анализа качества кода сайта

Кодовая база растёт, и без системного контроля качества в ней накапливаются баги, дублирование и уязвимости, которые code review часто пропускает. Мы настраиваем SonarQube — от установки и конфигурации правил до интеграции с вашим CI/CD и настройки Quality Gate. Наша команда реализует проект под ключ, обеспечивая стабильную работу и последующую поддержку, чтобы ваш код оставался чистым и надёжным.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка SonarQube для анализа качества кода сайта
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

Представьте: вы неделю рефакторите модуль оплаты, а через месяц другой разработчик чинит баг и случайно ломает соседний функционал. Или юнит-тесты зелёные, но в проде падает из-за гонки данных. Такие проблемы — следствие отсутствия системного контроля качества. SonarQube сканирует кодовую базу на запахи кода, дублирование, потенциальные баги и уязвимости. Quality Gate — автоматический порог: PR не мержится, если анализ не пройден. Мы — инженеры с опытом более десяти лет — внедряем SonarQube на проектах любого масштаба: от лендингов до высоконагруженных платформ.

Почему стоит использовать SonarQube?

Без статического анализа код со временем деградирует. Регулярное сканирование выявляет проблемы, которые code review может пропустить. По данным Wikipedia, SonarQube поддерживает более 30 языков, включая JavaScript, TypeScript, Python, PHP, C#, Java. В наших проектах он помог сократить количество багов на 30% за первый квартал, а экономия времени на code review составила около 20 часов в месяц. Интеграция с CI/CD — GitHub Actions, GitLab CI, Jenkins — делает проверку автоматической.

Как мы настраиваем SonarQube?

Ставим self-hosted версию на Docker или разворачиваем SonarCloud для open-source. Настройка включает: конфигурацию правил анализа под ваш стек, настройку метрик для Quality Gate, генерацию токенов и интеграцию с репозиторием. Пример типового развёртывания:

# Docker Compose services:
sonarqube:
  image: sonarqube:10-community
  environment:
    SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
    SONAR_JDBC_USERNAME: sonar
    SONAR_JDBC_PASSWORD: sonar
  ports:
    - "9000:9000"
  volumes:
    - sonarqube_data:/opt/sonarqube/data
    - sonarqube_logs:/opt/sonarqube/logs
db:
  image: postgres:15
  environment:
    POSTGRES_DB: sonar
    POSTGRES_USER: sonar
    POSTGRES_PASSWORD: sonar
  volumes:
    - sonar_db:/var/lib/postgresql/data
volumes:
  sonarqube_data:
  sonarqube_logs:
  sonar_db:

Конфигурация проекта

Указываем пути к исходникам, тестам, отчётам покрытия и исключаем шаблонные файлы:

# sonar-project.properties
sonar.projectKey=my-project
sonar.projectName=My Project
sonar.projectVersion=1.0
sonar.sources=src
sonar.tests=src
sonar.test.inclusions=**/*.test.ts,**/*.spec.ts
sonar.exclusions=**/*.d.ts,**/node_modules/**,**/.next/**
# TypeScript
sonar.typescript.lcov.reportPaths=coverage/lcov.info
# Дублирование: минимум токенов для срабатывания
sonar.cpd.ts.minimumTokens=100

GitHub Actions интеграция

Добавляем workflow для автоматического сканирования при каждом пуше или PR:

# .github/workflows/sonarqube.yml
name: SonarQube Analysis
on:
  pull_request:
    branches: [main]
  push:
    branches: [main]
jobs:
  sonar:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0 # shallow clone отключает анализ изменений
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - name: Generate coverage report
        run: npm test -- --coverage --coverageReporters=lcov
        env:
          CI: true
      - name: SonarQube Scan
        uses: SonarSource/sonarqube-scan-action@v2
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
          SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
      - name: SonarQube Quality Gate check
        uses: SonarSource/sonarqube-quality-gate-action@v1
        timeout-minutes: 5
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

Что такое Quality Gate и как его настроить?

Quality Gate определяет, какие изменения считаются приемлемыми. Мы выставляем жёсткие, но реалистичные пороги:

Условие (для новых строк) Порог Статус
Coverage < 70% FAILED
Duplicated Lines > 3% FAILED
Maintainability Rating < A FAILED
Reliability Rating < A FAILED
Security Rating < A FAILED
Security Hotspots Reviewed < 100% FAILED

Эти метрики дают полную картину технического долга.

SonarCloud: облачный вариант

Если проект open-source или вы не хотите администрировать сервер, используем SonarCloud. Он бесплатен для публичных репозиториев, интеграция — в несколько кликов:

# Бесплатно для открытых проектов
- name: SonarCloud Scan
  uses: SonarSource/sonarcloud-github-action@v2
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
  with:
    args: >
      -Dsonar.organization=my-org
      -Dsonar.projectKey=my-org_my-project
      -Dsonar.sources=src
      -Dsonar.typescript.lcov.reportPaths=coverage/lcov.info

Сравним self-hosted vs SonarCloud: self-hosted даёт полный контроль над данными и кастомизацию, но требует администрирования. SonarCloud быстрее разворачивается, но имеет ограничения по конфиденциальности.

Ключевые метрики SonarQube

Метрика Описание Типичный порог
Coverage Процент покрытия тестами ≥ 80%
Duplications Дублированные блоки кода ≤ 3%
Code Smells Запахи кода (сложность, когнитивная сложность) Рейтинг A
Bugs Вероятные баги (null pointer, неверные условия) 0
Vulnerabilities Потенциальные уязвимости 0
Security Hotspots Требуют ручного review 100% reviewed

Пошаговый процесс внедрения

  1. Анализ кодовой базы — запускаем первое сканирование, фиксируем текущие метрики и технический долг.
  2. Настройка профиля качества — подбираем правила под ваш стек (React, Laravel, Python и т.д.).
  3. Конфигурация Quality Gate — устанавливаем пороги на основе ваших SLA.
  4. Интеграция с CI/CD — подключаем GitHub Actions, GitLab CI, Jenkins или Bitbucket Pipelines.
  5. Обучение команды — проводим воркшоп по работе с отчётами и исправлению найденных проблем.
  6. Мониторинг и поддержка — настраиваем дашборды и алерты, гарантируем работоспособность две недели после внедрения.

Типичные ошибки при настройке

  • Shallow clone в CI: отключает анализ изменений — используйте fetch-depth: 0.
  • Пропуск исключений для сгенерированных файлов: они завышают количество запахов.
  • Отсутствие coverage report: без него Quality Gate не проверит покрытие.
  • Слишком мягкие пороги: Gate пропускает проблемный код.

Что входит в настройку SonarQube?

Мы предоставляем полный цикл работ:

  • Развёртывание SonarQube (Docker / bare metal / облако)
  • Настройка профилей качества и правил под ваш стек
  • Конфигурация Quality Gate с учётом ваших требований
  • Интеграция с CI/CD (GitHub Actions, GitLab CI, Jenkins, Bitbucket Pipelines)
  • Создание дашбордов и алертов
  • Документация по процессу и обучение команды
  • Гарантия корректной работы в течение двух недель после внедрения

Сроки и стоимость

Базовая настройка занимает от 1 до 2 рабочих дней. Сложные проекты с несколькими репозиториями и кастомными правилами — до 5 дней. Стоимость рассчитывается индивидуально под каждый проект. Наши инженеры внедрили SonarQube на 50+ проектах. Свяжитесь с нами — мы оценим ваш код и предложим оптимальное решение. Получите консультацию прямо сейчас.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060