Статический анализ Kotlin-приложений #
Документация на статический анализ #
- Проверка и форматирование исходного кода с ktlint
- Плагин для системы сборки Gradle для запуска ktlint
- Статический анализатор кода detekt
Статический анализ исходного кода #
Статический анализ исходного кода применяется для решения следующих задач:
- Нахождение синтаксических и лексических проблем в исходном коде. Реализуется внутри компилятора языка.
- Обеспечение единого оформления для исходного кода.
- Предупреждение потенциальных проблем в исходном коде приложения.
Изучите особенности анализа исходного кода
- Использование статического и динамического анализа для повышения качества продукции и эффективности разработки
- Внедряйте статический анализ в процесс, а не ищите с его помощью баги
- Статические анализаторы кода на примере ClickHouse
Проверка форматирования кода с помощью ktlint #
ktlint — инструмент для статического анализа форматирования исходного кода в соответствии с официальным соглашением о стилистике кода.
Для подключения к проекту необходимо:
- Добавить поддержку инструмента в систему сборки проекта Gradle.
- Добавить настройку стиля программирования в среду сборки IDEA.
- Использовать Gradle-задачи для проверки исходного кода на соответствие стиля.
Добавление поддержки в Gradle #
Инструмент ktlint может быть интегрирован разными способами, рассмотрим использование плагина Ktlint Gradle.
Необходимо добавить плагин в конфигурацию build.gradle.kts
:
plugins{
id("org.jlleitschuh.gradle.ktlint") version "12.1.1"
}
Внутри конфигурации необходимо указать версию инструмента. Для этого в файле
gradle.properties
укажите версию инструмента:
ktlintVersion=1.3.1
И в build.gradle.kts
необходимо указать используемую версию инструмента:
val ktlintVersion: String by project
ktlint {
version.set(ktlintVersion)
}
Необходимо обеспечить соответствие исходного кода требованиям ktlint. Отключение любых проверок запрещено.
Настройка инструмента ktlint #
Ktlint поддерживает несколько стандартов оформления. Настройка производится
путём формирования файла .editorconfig
, который должен располагаться рядом с
файлами конфигурации системы сборки Gradle build.gradle.kts
.
В рамках курса необходимо использовать следующую конфигурацию для данного файла:
[*.{kt,kts}]
ktlint_code_style = ktlint_official
Запуск проверки исходного кода #
После конфигурации можно запускать Gradle-задачу для проверки исходного кода
ktlintCheck
: ./gradlew ktlintCheck
. Все сообщения о нарушениях
форматирования необходимо исправить.
Ограничения инструмента:
- В пути к проекту допускается использование только символов латинского алфавита.
- Инструмент может выполнить кеширование результатов
Настройка форматирования в IDEA #
После успешной конфигурации необходимо выполнить в соответствии с официальным
руководством
Данная настройка позволит значительно уменьшить количество исправлений в
исходном коде, чтобы оно соответствовало требованиям статического анализатора
ktlint
.
Анализ потенциальных проблем в исходном коде #
Инструмент detekt выполняет поиск потенциальных проблем в исходном коде. Данные проблемы связаны с типичными проблемами:
- Слишком длинные методы.
- Большая вложенность циклов и условных операторов.
- Плохие названия переменных.
- Добавление комментариев к исходному коду и т.д.
Для использования инструмента необходимо:
- Сформировать правила проверки кода.
- Добавить конфигурацию для запуска инструмента в Gradle.
- Использовать Gradle-задачи для проверки исходного кода.
По желанию можно добавить расширение для IDEA.
Рекомендуется использовать данный инструмент и исправлять все известные ошибки.
Формирование набора правил проверки кода #
В настоящий момент никаких отличий относительно базовой конфигурации инструмента не предполагается.
Важно: самостоятельно вносить изменения в конфигурацию инструмента запрещено. В частности запрещено подавлять сообщения от анализатора с помощью аннотаций или baseline-файла.
Добавление поддержки в Gradle #
Инструмент изначально предлагает расширение для Gradle. Для его использования необходимо добавить соответствующий плагин в build.gradle.kts
:
plugins {
id("io.gitlab.arturbosch.detekt") version "1.23.7"
}
Далее внутри конфигурации необходимо добавить настройку для проверки кода:
detekt {
allRules = true
buildUponDefaultConfig = true
}
Запуск проверки исходного кода #
После конфигурации для проверки исходного кода можно запустить задачу detekt
:
./gradlew detekt
. Все сообщения от инструмента рекомендуется исправлять.
Настройка проверки внутри IDEA #
Проект detekt предоставляет возможность встроить проверку с помощью специального расширения.
Задача № 1. Добавление проверки оформления кода ktlint
#
Добавьте проверку исходного кода с помощью инструментов ktlint
в рамках
исходного кода последней практической работы. Исправьте все проблемы, которые
были найдены с помощью данного инструмента.
Задача № 2. Анализ исходных кодов с помощью detect
#
Добавьте в проект поддержку инструмента статического анализа detect
.
Постарайтесь исправить все сообщения инструмента.