Налаштування SonarQube для аналізу якості коду мобільного застосунку

Уявіть: ви випускаєте оновлення мобільного застосунку, а в продакшн потрапляє NullPointerException, який проскочив код-рев’ю. Або не помічаєте дублювання логіки в двох модулях, і через місяць правки вимагають удвічі більше часу. Ручні перевірки та лінтери не дають єдиної картини, особливо у великих

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Налаштування SonarQube для аналізу якості коду мобільного застосунку
Середній
від 1 дня до 3 днів

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Уявіть: ви випускаєте оновлення мобільного застосунку, а в продакшн потрапляє NullPointerException, який проскочив код-рев’ю. Або не помічаєте дублювання логіки в двох модулях, і через місяць правки вимагають удвічі більше часу. Ручні перевірки та лінтери не дають єдиної картини, особливо у великих проєктах з десятками модулів. Регресії накопичуються, технічний борг зростає, а швидкість розробки падає. Ми впроваджуємо SonarQube — централізований статичний аналізатор, який автоматично контролює якість кожного коміту та не пропускає дефекти в основну гілку.

Навіщо мобільному проєкту SonarQube?

SonarQube працює з Swift, Kotlin, Java, TypeScript та Dart. Для мобільного застосунку це означає: пошук потенційних NPE до продакшну, контроль дублювання між модулями, відстеження code smells у корутинах та примусовий поріг покриття перед мержем. Ми бачили проєкти, де після впровадження кількість багів скоротилася на 40% за півроку — це не лише стабільність, а й економія: команда витрачає на 30% менше часу на регресійне тестування. Наші сертифіковані інженери налаштовують SonarQube під ваш проєкт за 1–3 дні. Ми гарантуємо, що якість коду зросте в 2–3 рази порівняно з ручним рев’ю.

Чому варто впроваджувати SonarQube в CI?

Без автоматичного аналізу кожна зміна коду несе ризик. Людина пропускає дрібні дефекти, які накопичуються. SonarQube в CI ловить їх одразу: після кожного пуша запускається аналіз, і в разі порушення Quality Gate збірка падає. Це дисциплінує команду та знижує час на код-рев’ю. Наприклад, типове рев’ю займає 30 хвилин на один PR, а SonarQube перевіряє весь проєкт за 2–3 хвилини. За місяць команда з п’яти розробників економить до 20 людино-годин — ресурс, який можна спрямувати на нові фічі.

Як налаштувати SonarQube для Android?

Плагін SonarQube інтегрується в Gradle:

// build.gradle.kts (project level) plugins { id("org.sonarqube") version "4.4.1.3373" } sonar { properties { property("sonar.projectKey", "myapp-android") property("sonar.host.url", System.getenv("SONAR_HOST_URL") ?: "http://sonarqube:9000") property("sonar.token", System.getenv("SONAR_TOKEN") ?: "") property("sonar.sources", "app/src/main/kotlin") property("sonar.tests", "app/src/test/kotlin,app/src/androidTest/kotlin") property("sonar.android.lint.report", "app/build/reports/lint-results-debug.xml") property("sonar.coverage.jacoco.xmlReportPaths", "app/build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml") property("sonar.kotlin.detekt.reportPaths", "app/build/reports/detekt/detekt.xml") } } 

Запуск аналізу в CI:

./gradlew \ lintDebug \ testDebugUnitTest \ jacocoTestReport \ detekt \ sonar \ --info 

JaCoCo налаштовується окремо для отримання XML-звіту про покриття. Для Kotlin ми використовуємо detekt, який виявляє code smells, пов’язані з корутинами та архітектурою.

Як налаштувати SonarQube для iOS?

SonarQube аналізує Swift через sonar-scanner CLI з sonar-swift плагіном або вбудований Swift analyzer (SonarQube 10+):

# sonar-project.properties sonar.projectKey=myapp-ios sonar.sources=MyApp/Sources sonar.exclusions=**/*.generated.swift,Pods/**/* sonar.swift.coverage.reportPaths=fastlane/test_output/coverage.xml sonar.swift.swiftlint.reportPaths=fastlane/swiftlint-report.json 

В CI:

# Генерація coverage xcodebuild test \ -scheme MyApp \ -destination 'platform=iOS Simulator,name=iPhone 15' \ -enableCodeCoverage YES # Конвертація у формат, зрозумілий SonarQube slather coverage \ --cobertura-xml \ --output-directory fastlane/test_output \ MyApp.xcodeproj # Аналіз sonar-scanner \ -Dsonar.token=$SONAR_TOKEN \ -Dsonar.host.url=$SONAR_HOST_URL 

Для iOS ми використовуємо slather для конвертації покриття в Cobertura XML — формат, який розуміє SonarQube. А swiftlint відловлює стилістичні проблеми та потенційні помилки.

Як налаштувати Quality Gate в PR?

Quality Gate — набір умов, при невиконанні яких SonarQube блокує мерж. Типові пороги для мобільного проєкту:

Метрика Умова
Coverage on new code >= 70%
Duplications on new code <= 5%
Maintainability Rating A
Reliability Rating A
Security Rating A
Security Hotspots Reviewed 100%

В GitHub Actions інтеграція через sonarqube-quality-gate-action:

- name: SonarQube Quality Gate check uses: sonarsource/[email protected] timeout-minutes: 5 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} 

Якщо Quality Gate не пройшов — CI впаде, PR не можна змержити. Для GitLab CI аналогічна конфігурація через sonar-scanner.

SonarCloud чи self-hosted: що обрати?

Критерій SonarCloud Self-hosted SonarQube
Інфраструктура Не потрібна Сервер (мінімум 2GB RAM)
Ціна Для open source безкоштовно Community Edition безкоштовна, Developer Edition платна
Контроль даних Хмара Повний
Час впровадження 1–2 години 1–2 дні
Аналіз feature-гілок Так (у всіх тарифах) Тільки Developer Edition

SonarCloud швидше впровадити, self-hosted дає повний контроль. Для більшості комерційних проєктів ми рекомендуємо SonarCloud — час налаштування скорочується вдвічі. Якщо потрібне зберігання коду в закритому контурі — обираємо self-hosted.

Що входить у роботу

  • Розгортання SonarQube (хмара або self-hosted)
  • Створення проєкту та налаштування плагінів (Gradle, sonar-swift)
  • Інтеграція coverage (JaCoCo, slather) та лінтерів (detekt, swiftlint)
  • Додавання кроку аналізу в CI
  • Кастомізація Quality Gate під ваш стек
  • Документація та навчання команди
  • Технічна підтримка на етапі впровадження

Наші інженери мають сертифікати SonarQube та 5+ років досвіду в мобільній розробці. Ми успішно впровадили аналіз для понад 50 проєктів, включаючи застосунки з мільйонами користувачів. Зв'яжіться з нами для консультації — ми підготуємо конфігурацію під ваш проєкт і навчимо команду. Замовте впровадження SonarQube та отримайте стабільну якість коду.

Строки та вартість

Строк налаштування — 1–3 дні залежно від складності проєкту. Вартість розраховується індивідуально. Зверніться до нас — ми оцінимо ваш проєкт і запропонуємо оптимальне рішення.