Встречайте detekt — инструмент статического анализа кода для языка программирования Kotlin . Посетите веб-сайт проекта, чтобы найти руководства по установке, описания правил, параметры конфигурации и многое другое.
Анализ запаха кода для ваших проектов Kotlin.
Широкие возможности настройки наборов правил.
Создавайте базовые показатели для подавления существующих проблем в устаревших проектах, следя за тем, чтобы не возникало новых проблем.
Подавляйте проблемы в исходных файлах с помощью аннотаций @Suppress
.
Поддержка различных форматов отчетов: HTML, Markdown, SARIF, XML (Checkstyle) и пользовательских отчетов.
Расширьте обнаружение с помощью пользовательских наборов правил и отчетов.
Отчеты о сложности основаны на строках кода, цикломатической сложности и количестве запахов кода.
Собственная интеграция с Gradle с помощью нашего плагина Gradle.
Сообщество сторонних плагинов, которое добавляет в detekt больше правил и функций.
Журнал изменений и руководства по миграции
Доступные параметры CLI
Набор правил и описания правил
Написание пользовательских правил и расширение детекта
Подавление проблем в коде
Подавление проблем с помощью базового файла
Настройка детекта
Примеры интеграции Gradle:
мультипроект (Kotlin DSL)
один проект (Groovy DSL)
один проект (неофициальный плагин Maven)
curl -sSLO https://github.com/detekt/detekt/releases/download/v[версия]/detekt-cli-[версия]-all.jar java -jar detekt-cli-[версия]-all.jar --help
Другие способы установки детектора вы можете найти здесь
плагины { id("io.gitlab.arturbosch.detekt") версия "[версия]"} репозитории { mavenCentral() } обнаружить { buildUponDefaultConfig = true // предварительно настроить defaultsallRules = false // активировать все доступные (даже нестабильные) правила.config.setFrom("$projectDir/config/detekt.yml") // указать на вашу пользовательскую конфигурацию, определяющую правила для запуска, перезаписывая базовый уровень поведения по умолчанию = file("$projectDir/config/baseline.xml") // способ подавления проблем перед введением обнаружения} Tasks.withType().configureEach { отчеты { html.required.set(true) // наблюдайте за результатами в своем браузере с помощью структуры и фрагментов кодаxml.required.set(true) // формат, похожий на контрольный стиль, в основном для таких интеграций, как Jenkinssarif.required.set(true) // стандартизированный формат SARIF ( https://sarifweb.azurewebsites.net/) для поддержки интеграции с GitHub Code Scanningmd.required.set(true) // простой формат Markdown} }// Groovy DSLtasks.withType(Detekt).configureEach { jvmTarget = "1.8"} Tasks.withType(DetektCreateBaselineTask).configureEach { jvmTarget = "1.8"}// или// Kotlin DSLtasks.withType ().configureEach { jvmTarget = "1.8"} Tasks.withType ().configureEach { jvmTarget = "1.8"}
См. maven Central для выпусков и sonatype для снимков.
Если вы хотите использовать версию SNAPSHOT, дополнительную информацию можно найти на этой странице документации.
Gradle 6.8.3+ — минимальное требование. Однако рекомендуемые версии вместе с другими рекомендуемыми версиями инструментов:
Детект Версия | Градл | Котлин | АГП | Целевой уровень Java | Максимальная версия JDK |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
Список рекомендуемых версий для предыдущей версии Детекта указан здесь.
Сам detekt предоставляет оболочку над ktlint в качестве набора правил formatting
, который можно легко добавить в конфигурацию Gradle:
зависимости { detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[версия]") }
Аналогичным образом, для detekt из detekt доступны дополнительные наборы правил:
зависимости { detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[версия]") detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[версия]") }
Для получения дополнительной информации посетите торговую площадку Detekt.
Аналогичным образом в detekt можно добавить собственные расширения.
См. ВКЛАД
Спасибо всем, кто внес свой вклад в Детект!
Как упоминалось в...
Для Детекта 2.0 и выше!
droidcon Лондон 2021 - Детект - Состояние Союза
KotlinConf 2018 - Safe(r) Kotlin Code - Инструменты статического анализа для Kotlin от Марвина Рамина
droidcon NYC 2018 — Статический анализ кода для Kotlin
Kotlin об инструментах качества кода — автор @vanniktech Слайды-презентация
Интеграция детекта в рабочий процесс
Проверьте качество кода Kotlin
Инструменты статического анализа Kotlin
Вы все еще чувствуете это?: Сравнительное исследование Java и языка Kotlin, проведенное Flauzino et al.
Предотвращение программных антипаттернов с помощью Детекта
Интеграции:
Интеграция IntelliJ
Интеграция SonarQube
Интеграция TCA (Tencent CodeAnaанализ)
кодирование
Плагин Gradle, который настраивает Error Prone, Checkstyle, PMD, CPD, Lint, Detecte & Ktlint.
Violations Lib — это библиотека Java для анализа файлов отчетов, например статического анализа кода.
Sputnik — бесплатный инструмент для статического анализа кода, обеспечивающий поддержку детекта.
Плагин Detekt Maven, который оборачивает интерфейс командной строки Detekt
Плагин Detekt Bazel, который оборачивает интерфейс командной строки Detekt
Плагин Gradle, который помогает упростить проверку PR на GitHub и автоматическое комментирование нарушений.
Кодфактор
Действие GitHub: Обнаружить все
Действие GitHub: обнаружение установки
Пользовательские правила и отчеты третьих сторон можно найти на нашей торговой площадке Detekt .
JetBrains — Создание IntelliJ + Kotlin
PMD, Checkstyle и ktlint — идеи для пороговых значений и правил стиля