Skip to content

Latest commit

 

History

History
328 lines (256 loc) · 10.9 KB

File metadata and controls

328 lines (256 loc) · 10.9 KB

❓ FAQ (Часто задаваемые вопросы)

Общие вопросы

Что такое SonarQube?

SonarQube - это платформа с открытым исходным кодом для непрерывной инспекции качества кода. Она автоматически находит баги, уязвимости, code smells и измеряет покрытие тестами.

Какие языки поддерживаются?

  • JavaScript/TypeScript
  • Python
  • Java
  • C#
  • PHP
  • Go
  • Ruby
  • Kotlin
  • и многие другие (27+ языков)

В чем разница между Community и Developer Edition?

  • Community Edition (бесплатная): поддержка основных языков, базовые метрики
  • Developer Edition: ветвление анализа, больше языков, расширенные метрики
  • Enterprise/Data Center: масштабирование, портфолио проектов, SLA

Установка и настройка

Какие минимальные требования?

  • RAM: 2GB (рекомендуется 4GB+)
  • CPU: 2 cores
  • Disk: 10GB+
  • OS: Linux, macOS, Windows
  • Docker: версия 20.10+
  • Docker Compose: версия 2.0+

Почему SonarQube не запускается?

Проверьте:

  1. Системные лимиты: sysctl vm.max_map_count (должно быть >= 262144)
  2. Доступную память: free -h
  3. Логи: docker-compose logs sonarqube
  4. Порт 9000 не занят: netstat -tulpn | grep 9000

Как изменить порт?

Отредактируйте docker-compose.yml:

ports:
  - "8080:9000"  # вместо "9000:9000"

Можно ли использовать MySQL вместо PostgreSQL?

Нет. С версии 8.0 SonarQube поддерживает только PostgreSQL. MySQL больше не поддерживается.


GitHub Actions

Ошибка: "SONAR_TOKEN not found"

  1. Проверьте что секрет создан: Settings > Secrets and variables > Actions
  2. Имя должно быть SONAR_TOKEN (не sonar_token)
  3. Проверьте что workflow использует правильное имя: ${{ secrets.SONAR_TOKEN }}

Ошибка: "Quality Gate failed"

Это нормально! Означает что код не соответствует критериям качества:

  • Проверьте отчет в SonarQube UI
  • Исправьте найденные проблемы
  • Или измените критерии Quality Gate

Как игнорировать определенные файлы?

В sonar-project.properties:

sonar.exclusions=**/node_modules/**,**/dist/**,**/*.test.js

Или в workflow через args:

-Dsonar.exclusions=**/node_modules/**,**/dist/**

Можно ли запускать анализ только для main ветки?

Да:

on:
  push:
    branches:
      - main  # только main

Анализ кода

Как добавить coverage отчет?

  1. Запустите тесты с coverage
  2. Укажите путь к отчету:
-Dsonar.javascript.lcov.reportPaths=coverage/lcov.info
-Dsonar.python.coverage.reportPaths=coverage.xml

Что такое Code Smells?

Проблемы поддерживаемости кода:

  • Дублирование кода
  • Сложная логика
  • Неиспользуемые переменные
  • Плохие практики

Не баги, но снижают качество кода.

Что такое Technical Debt?

Оценка времени, необходимого для исправления всех проблем. Измеряется в человеко-днях.

Как работает Quality Gate?

Набор условий (например: "Coverage > 80%", "Bugs = 0"), которые должны быть выполнены. Если хотя бы одно условие не выполнено - Quality Gate провален.

Почему анализ долго выполняется?

  • Большой проект
  • Много файлов
  • Включен анализ всех веток
  • Недостаточно ресурсов

Решения:

  • Увеличить CPU/RAM
  • Использовать incremental analysis
  • Добавить больше exclusions

Безопасность

Как изменить дефолтный пароль?

  1. Войдите с admin/admin
  2. При первом входе система попросит сменить пароль
  3. Или: Administration > Security > Users > admin > Change password

Как создать токен для GitHub Actions?

  1. User > My Account > Security
  2. Generate Token
  3. Name: github-actions
  4. Type: Global Analysis Token
  5. Скопируйте токен (показывается один раз!)

Безопасно ли держать SonarQube открытым в интернете?

С мерами предосторожности:

  • ✅ Используйте SSL
  • ✅ Сильные пароли
  • ✅ Обновляйте регулярно
  • ✅ Firewall правила
  • ⚠️ Рассмотрите VPN для админ доступа

Где хранятся секреты GitHub?

В зашифрованном виде на серверах GitHub. Они:

  • Не показываются в логах
  • Доступны только во время выполнения workflow
  • Требуют прав на репозиторий для изменения

Production

Нужен ли мне Nginx?

Не обязательно, но рекомендуется для:

  • SSL/TLS терминации
  • Сжатия gzip
  • Кэширования
  • Балансировки (при масштабировании)

Как настроить SSL?

  1. Получите сертификат (Let's Encrypt)
  2. Используйте docker-compose.prod.yml
  3. Настройте nginx.conf
  4. Или используйте Cloudflare

Как сделать бэкап?

# Ручной
make backup

# Автоматический (crontab)
0 2 * * * /path/to/backup.sh

Как восстановить бэкап?

make restore
# или
./restore.sh path/to/backup.sql

Как обновить SonarQube?

# 1. Сделать бэкап!
make backup

# 2. Обновить образы
docker-compose pull

# 3. Перезапустить
docker-compose up -d

Troubleshooting

Ошибка: "max virtual memory areas vm.max_map_count [65530] is too low"

sudo sysctl -w vm.max_map_count=524288
echo "vm.max_map_count=524288" | sudo tee -a /etc/sysctl.conf

Ошибка: "Could not connect to database"

  1. Проверьте что PostgreSQL контейнер запущен: docker-compose ps
  2. Проверьте логи: docker-compose logs db
  3. Проверьте credentials в .env
  4. Перезапустите: docker-compose restart

Ошибка: "Insufficient privileges"

Токен не имеет прав. Создайте новый токен с правами "Execute Analysis".

SonarQube медленно работает

  1. Увеличьте RAM контейнера
  2. Добавьте swap
  3. Проверьте disk I/O
  4. Оптимизируйте PostgreSQL
  5. Рассмотрите SSD вместо HDD

GitHub Action timeout

  1. Увеличьте timeout в workflow:
timeout-minutes: 30
  1. Оптимизируйте exclusions
  2. Используйте incremental analysis

Интеграции

Можно ли интегрировать с GitLab CI?

Да:

sonarqube:
  image: sonarsource/sonar-scanner-cli:latest
  script:
    - sonar-scanner -Dsonar.projectKey=$CI_PROJECT_NAME

Можно ли интегрировать с Jenkins?

Да, есть официальный плагин SonarQube Scanner for Jenkins.

Можно ли отправлять результаты в Slack?

Да:

  1. Administration > Webhooks
  2. Создайте webhook с URL Slack incoming webhook
  3. Или используйте GitHub Action для комментирования

Можно ли использовать с приватным репозиторием?

Да, GitHub Actions работает с приватными репозиториями. Секреты также поддерживаются.


Производительность

Сколько проектов можно анализировать?

Зависит от ресурсов:

  • 2GB RAM: 1-5 небольших проектов
  • 4GB RAM: 5-20 средних проектов
  • 8GB+ RAM: 20+ или несколько больших проектов

Как ускорить анализ?

  1. Используйте exclusions для ненужных файлов
  2. Включите incremental analysis
  3. Анализируйте только измененные файлы в PR
  4. Увеличьте CPU
  5. Используйте SSD

Сколько хранится история?

По умолчанию:

  • Issues: бесконечно
  • Snapshots: можно настроить (Administration > General > Database Cleaner)

Стоимость

Сколько стоит SonarQube?

  • Community Edition: Бесплатно
  • Developer Edition: от $150/год
  • Enterprise Edition: от $20,000/год
  • Data Center Edition: Custom pricing

Сколько стоит GitHub Actions?

  • Public репозитории: Бесплатно
  • Private репозитории:
    • Free plan: 2000 минут/месяц
    • Pro: 3000 минут/месяц
    • Team: 10000 минут/месяц

Сколько стоит VPS?

  • Shared: $5-10/месяц (для тестов)
  • VPS: $10-50/месяц (для production)
  • Dedicated: $100+/месяц (для enterprise)

Рекомендации:

  • DigitalOcean: от $12/месяц (2GB RAM)
  • Hetzner: от €4/месяц (2GB RAM)
  • AWS EC2: от $15/месяц (t3.small)

Поддержка

Где получить помощь?

Где сообщить о баге?

Как внести вклад?

  1. Fork репозиторий
  2. Создайте feature branch
  3. Сделайте изменения
  4. Создайте Pull Request