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