Конкуренты5 мин чтения2026-03-06

Установка SonarQube: полный гайд от настройки БД до первого анализа кода

SonarQube — это то, на что смотрят все, когда нужен серьёзный инструмент для анализа кода. Платформа сканирует исходники, ловит баги, уязвимости, дублирование к

SonarQube — это то, на что смотрят все, когда нужен серьёзный инструмент для анализа кода. Платформа сканирует исходники, ловит баги, уязвимости, дублирование кода и проблемы с архитектурой. Звучит как волшебство? На самом деле это просто статический анализ, но сделанный очень хорошо.

Но вот незадача — установка SonarQube отпугивает многих. PostgreSQL, Java, куча конфигов... По моему опыту, половина попыток установки заканчивается на этапе запуска. Поэтому я расскажу, как это сделать правильно, с деталями.

Что такое SonarQube и зачем оно нужно

Короче, это сервер, который парсит ваш код и выдаёт отчёт: "здесь дыра в безопасности", "этот метод 500 строк, пора рефакторить", "код дублируется в трёх местах".

SonarQube работает на основе правил — их больше 3000 для разных языков. Поддерживает Python, Java, JavaScript, TypeScript, C#, Go, PHP и ещё с десяток других.

Возможности:

Плюсы: полнофункциональный, гибкий, можно развернуть на своих серверах. Минусы: тяжелый (требует PostgreSQL и 2+ ГБ RAM), медленный на больших кодовых базах, платная версия для продвинутых фич.

Требования к системе и подготовка

Прежде чем начать, нужно понять, что мы устанавливаем. SonarQube — это Java-приложение, которое требует:

Я рекомендую Linux (Ubuntu 20.04+ или Debian 11+). На Windows тоже работает, но хлопот больше.

Проверим Java:

java -version

Если нет — устанавливаем:

sudo apt-get update
sudo apt-get install openjdk-17-jdk

Убедитесь, что Java именно 17+:

java -version
# должно вывести что-то вроде "openjdk version "17.0.x""

Установка PostgreSQL

SonarQube на встроенной БД работает только для оценки. Для production — нужна отдельная база.

sudo apt-get install postgresql postgresql-contrib

Стартуем PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

Теперь создаём пользователя и базу для SonarQube:

sudo -u postgres psql

В интерактивной оболочке PostgreSQL:

CREATE USER sonarqube WITH PASSWORD 'your_secure_password_here';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
ALTER SYSTEM SET max_prepared_transactions = 96;
\q

Перезагружаем PostgreSQL, чтобы применить параметры:

sudo systemctl restart postgresql

Проверяем подключение:

psql -U sonarqube -d sonarqube -h localhost

Если вы видите prompt sonarqube=>, значит всё работает. Выходим:

\q

Скачивание и распаковка SonarQube

Идём на sonarqube.org/downloads. Берём Community Edition (бесплатная версия). На момент написания это версия 10.x.

cd /opt
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.6.0.92116.zip
sudo unzip sonarqube-10.6.0.92116.zip
sudo mv sonarqube-10.6.0.92116 sonarqube
sudo chown -R nobody:nogroup /opt/sonarqube

Почему nobody:nogroup? Потому что SonarQube не должен работать от root — это плохая идея для безопасности.

Конфигурирование SonarQube

Основной конфиг находится в sonarqube/conf/sonar.properties. Отредактируем его:

sudo nano /opt/sonarqube/conf/sonar.properties

Нужно раскомментировать и заполнить строки про БД:

sonar.jdbc.username=sonarqube
sonar.jdbc.password=your_secure_password_here
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

# Порт, на котором будет работать веб-интерфейс
sonar.web.port=9000

# Если хотите доступ не только с localhost
sonar.web.host=0.0.0.0

# Java heap размер (для малых проектов 512m, для больших 2g+)
sonar.web.javaOpts=-Xmx2g -Xms1g

Сохраняем (Ctrl+X, Y, Enter).

Создание systemd сервиса

Чтобы SonarQube запускался при старте системы и управлялся как сервис, создаём файл:

sudo nano /etc/systemd/system/sonarqube.service

Вставляем:

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
ExecReload=/opt/sonarqube/bin/linux-x86-64/sonar.sh restart
User=nobody
Group=nogroup
Restart=always

[Install]
WantedBy=multi-user.target

Даём права на исполнение скрипту:

sudo chmod +x /opt/sonarqube/bin/linux-x86-64/sonar.sh

Перезагружаем systemd и стартуем SonarQube:

sudo systemctl daemon-reload
sudo systemctl start sonarqube
sudo systemctl enable sonarqube

Проверяем статус:

sudo systemctl status sonarqube

Должно быть active (running).

Первый запуск и вход в веб-интерфейс

Первый запуск может занять минуту-две. SonarQube инициализирует БД, создаёт индексы и всё такое.

Когда сервис запустился, открываем браузер и идём на:

http://localhost:9000

Вводим дефолтные учётные данные:

SonarQube попросит сменить пароль. Меняем на что-то безопасное.

Поздравляю, вы установили SonarQube!

Интеграция с GitHub/GitLab и первый анализ

Теперь нужно настроить анализ кода. Самый популярный способ — через SonarScanner.

Скачиваем SonarScanner:

cd /opt
sudo wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-6.2.1.4610-linux-x64.zip
sudo unzip sonar-scanner-cli-6.2.1.4610-linux-x64.zip
sudo mv sonar-scanner-6.2.1.4610-linux-x64 sonar-scanner
sudo chown -R nobody:nogroup /opt/sonar-scanner

Добавляем в PATH:

echo 'export PATH=$PATH:/opt/sonar-scanner/bin' >> ~/.bashrc
source ~/.bashrc

В проекте создаём файл sonar-project.properties:

sonar.projectKey=my_project
sonar.projectName=My Project
sonar.projectVersion=1.0
sonar.sources=src
sonar.host.url=http://localhost:9000
sonar.login=YOUR_TOKEN_HERE

Токен берём из SonarQube в Administration > Security > Users > Generate Token.

Запускаем анализ:

cd /path/to/your/project
sonar-scanner

SonarScanner загрузит результаты в SonarQube, и вы увидите отчёт в веб-интерфейсе.

Плюсы и минусы SonarQube в реальной работе

Плюсы:

Минусы:

Когда SonarQube имеет смысл, а когда нет

Подходит для:

Не подходит для:

Альтернативы:

Честно? Если у вас есть возможность использовать облачное решение — используйте. Если нужна полная приватность и контроль — тогда SonarQube.


Я установил SonarQube на пяти разных проектах. Первый раз в душе не чаю, потом привыкаешь. Главное — не пытайтесь установить это на shared hosting или дешёвый VPS. Это инструмент для серьёзных систем.

Если вам нужна автоматизация code review, но без лишних сложностей с установкой — посмотрите на Distiq. Это российский AI-бот для code review, который интегрируется за 2 минуты и не требует отдельного сервера. Работает в GitLab, GitHub и GitVerse.

Попробуйте Distiq для автоматического code review

AI-бот анализирует каждый MR/PR и оставляет комментарии с замечаниями. Интеграция за 2 минуты.

Попробовать бесплатно

Похожие статьи