текст перекладу
Дотримання чистоти коду — це не тільки частина кращих практик, але й сприяє підтримуваності, безпеці та надійності коду.
текст перекладу
Це можна досягти шляхом інтеграції статичного аналізу коду за допомогою SonarQube.
У цій статті ми дізнаємося, як інтегрувати SonarQube в Azure DevOps пайплайн, збирати вихідний код, аналізувати його та надавати результат сканування в панелі моніторингу SonarQube.
Необхідні умови
- Підготуйте віртуальну машину
- Встановіть Docker на машину
- Завантажте та запустіть образ SonarQube
- Створіть сервер Azure DevOps
Кроки
1 — Запуск SonarQube як контейнеру за допомогою Docker
- Перейдіть на сторінку SonarQube на Docker Hub, щоб переглянути детальні інструкції. Ми використаємо найпростіший варіант, ви можете додати томи для збереження даних.
docker run -d --name sonarqube -p 9000:9000 sonarqube:community
- Перевірте, чи SonarQube працює в браузері
- За замовчуванням ім’я користувача та пароль — admin для обох. Вам буде запропоновано змінити їх, після чого натискайте "Зберегти".
2 — Налаштування Azure DevOps
- Імпортуйте свій вихідний код у репозиторій Azure DevOps
- Клікніть на своє зображення профілю, щоб отримати опцію створення персонального токена доступу (PAT)
- Скопіюйте його в безпечне місце
- Ми повернемося до завершення налаштування Azure DevOps
- Не розголошуйте ваш токен, токен, використаний тут, був видалений
3 — Налаштування конфігурації вашої платформи DevOps
- Тепер ми переходимо на панель моніторингу SonarQube
- Виберіть репозиторій, де зберігається ваш код. У цьому випадку ми вибираємо Azure DevOps
- Це припускає, що ваш код налаштований в репозиторії Azure DevOps, додайте URL вашої організації, і ви автоматично побачите всі проекти в цій організації
- Виберіть проект, який ви хочете інтегрувати для сканування Sonar, і імпортуйте його
- Виберіть інструмент безперервної інтеграції, в цьому випадку — Azure DevOps
- Інструкції будуть надані, просто слідуйте за ними
4 — Налаштування підключення сервісу в Azure DevOps
- Перейдіть в розширення Azure DevOps, пошукайте та встановіть SonarQube від Sonarsource
- Перейдіть в налаштування, виберіть "Service Connection" та оберіть SonarQube
- Введіть ім’я для підключення сервісу
- Введіть URL або кінцеву точку вашого сервера SonarQube
- Введіть токен, згенерований на сервері Sonar
- І натисніть "Зберегти"
5 — Додавання коду SonarQube до вашого пайплайну
- Перейдіть на сторінку SonarQube, щоб знайти код для вашого додатку
- У цьому випадку я працюю з додатком для Netflix, який побудовано на JavaScript
- Ось код
steps:
# Checkout the repository
- checkout: self
# Disable shallow fetch
fetchDepth: 0
# Prepare Analysis Configuration task
- task: SonarQubePrepare@7
inputs:
SonarQube: ''
scannerMode: 'cli'
configMode: 'manual'
cliProjectKey: ''
# Add your build task(s) here
# Run Code Analysis task
- task: SonarQubeAnalyze@7
inputs:
jdkversion: 'JAVA_HOME_17_X64'
# Publish Quality Gate Result task
- task: SonarQubePublish@7
inputs:
pollingTimeoutSec: '300'
- Заповніть всі необхідні поля та запустіть пайплайн
текст перекладу - замініть ключ проекту в коді на ключ, згенерований на сервері Sonar
6 — Додатково, створіть Quality Gate
Quality Gate використовується для визначення метрик і стандартів, яким ваш застосунок має відповідати, перш ніж його можна буде вважати чистим кодом.
Ось деякі з метрик:
- Code Coverage вимірює відсоток вашого коду, який протестовано юніт-тестами.
текст перекладу
налаштуйте так, щоб досягти принаймні 80% покриття для критичних проєктів. Менше для менш критичного коду. - Дубльовані рядки (%) t відсоток коду, що дублюється між файлами або функціями
- Рейтинг надійності m оцінює, наскільки надійний код, враховуючи такі проблеми, як баги.
- Безпекові гарячі точки i виявляє потенційні вразливості безпеки
- Коефіцієнт успішних тестів t відношення успішних тестів до загальної кількості тестів, забезпечте 100% успіхів в автоматизованих тестах, прагнучи до нульових помилок тестування в продуктивному середовищі.
- Вразливості m оцінює кількість вразливостей безпеки в кодовій базі
- Запахи коду оцінює кількість проблем, що свідчать про погані практики кодування, але не обов'язково впливають на функціональність.
- Запустіть ваш пайплайн
- перевірте результат на сервері SonarQube
Перекладено з: Integrating SonarQube With Azure DevOps Pipeline