Вопрос проверяет понимание инструмента статического анализа кода SonarQube, его назначения и решаемых задач для повышения качества и безопасности кодовой базы.
SonarQube — это серверное приложение, которое выполняет автоматический статический анализ исходного кода для выявления проблем, влияющих на его качество, безопасность и поддерживаемость. Анализ происходит без запуска программы, путём проверки синтаксиса, структуры и паттернов кода.
SonarQube обычно разворачивается как отдельный сервер и интегрируется в конвейер непрерывной интеграции (CI/CD). При каждом коммите или пулл-реквесте анализатор сканирует изменённый код и предоставляет отчёт. Разработчики видят проблемы прямо в интерфейсе GitHub/GitLab или в дашборде SonarQube.
name: SonarQube Scan
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
- name: Run SonarQube Analysis
run: |
# Анализ Java-проекта с помощью Maven
mvn clean verify sonar:sonar \
-Dsonar.projectKey=my-project \
-Dsonar.host.url=${{ secrets.SONAR_HOST_URL }} \
-Dsonar.login=${{ secrets.SONAR_TOKEN }}Этот workflow запускает анализ и отправляет результаты на сервер SonarQube. Проблемы классифицируются по серьёзности (Blocker, Critical, Major, Minor, Info), что помогает расставлять приоритеты.
SonarQube стоит применять в проектах, где важно поддерживать высокое качество кода, снижать риски безопасности и системно управлять техническим долгом, особенно в командах, практикующих CI/CD и стремящихся к автоматизации code review.