Conheça o detekt , uma ferramenta de análise estática de código para a linguagem de programação Kotlin . Visite o site do projeto para guias de instalação, descrições de regras, opções de configuração e muito mais.
Análise de cheiro de código para seus projetos Kotlin.
Conjuntos de regras altamente configuráveis.
Gere linhas de base para suprimir problemas existentes em projetos legados e, ao mesmo tempo, garantir que nenhum problema novo seja introduzido.
Suprima problemas em arquivos de origem usando anotações @Suppress
.
Suporte para diferentes formatos de relatórios: HTML, Markdown, SARIF, XML (Checkstyle) e relatórios personalizados.
Amplie a detecção com conjuntos de regras e relatórios personalizados.
Relatórios de complexidade baseados em linhas de código, complexidade ciclomática e número de cheiros de código.
Integração primária com Gradle com nosso plugin Gradle.
Uma comunidade de plug-ins de terceiros que adiciona mais regras e recursos à detecção.
Changelog e guias de migração
Opções CLI disponíveis
Conjunto de regras e descrições de regras
Escrevendo regras personalizadas e estendendo a detecção
Suprimindo problemas no código
Suprimindo problemas por meio do arquivo de linha de base
Configurando detecção
Exemplos de integrações do Gradle:
multiprojeto (Kotlin DSL)
projeto único (Groovy DSL)
projeto único (plugin Maven não oficial)
curl -sSLO https://github.com/detekt/detekt/releases/download/v[versão]/detekt-cli-[versão]-all.jar java -jar detekt-cli-[versão]-all.jar --help
Você pode encontrar outras maneiras de instalar o detekt aqui
plug-ins { id("io.gitlab.arturbosch.detekt") versão "[versão]"} repositórios { mavenCentral() } detectar { buildUponDefaultConfig = true // pré-configura defaultsallRules = false // ativa todas as regras disponíveis (mesmo instáveis).config.setFrom("$projectDir/config/detekt.yml") // aponta para sua configuração personalizada definindo regras para execução, sobrescrevendo o behaviorbaseline padrão = file("$projectDir/config/baseline.xml") // uma forma de suprimir problemas antes de introduzir a detecção} tarefas.withType().configureEach { relatórios { html.required.set(true) // observe as descobertas em seu navegador com estrutura e trechos de códigoxml.required.set(true) // formato tipo checkstyle principalmente para integrações como Jenkinssarif.required.set(true) // formato SARIF padronizado ( https://sarifweb.azurewebsites.net/) para oferecer suporte a integrações com GitHub Code Scanningmd.required.set(true) // formato Markdown simples} }// DSLtasks.withType(Detekt).configureEach { bacana jvmTarget = "1.8"} tarefas.withType(DetektCreateBaselineTask).configureEach { jvmTarget = "1.8"}// ou// Kotlin DSLtasks.withType ().configureEach { jvmTarget = "1.8"} tarefas.withType ().configureEach { jvmTarget = "1.8"}
Consulte maven central para versões e sonatype para instantâneos.
Se quiser usar uma versão SNAPSHOT, você pode encontrar mais informações nesta página de documentação.
Gradle 6.8.3+ é o requisito mínimo. No entanto, as versões recomendadas juntamente com as outras versões recomendadas das ferramentas são:
Versão de detecção | Gradle | Kotlin | AGP | Nível alvo Java | Versão máxima do JDK |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
A lista de versões recomendadas para a versão anterior do detekt está listada aqui.
O próprio detekt fornece um wrapper sobre o ktlint como o conjunto de regras formatting
que pode ser facilmente adicionado à configuração do Gradle:
dependências { detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[versão]") }
Da mesma forma, existem conjuntos de regras extras disponíveis para detecção de detecção:
dependências { detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[versão]") detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[versão]") }
Para mais informações visite o Detekt Marketplace.
Da mesma forma, extensões personalizadas podem ser adicionadas ao detekt.
Veja CONTRIBUINDO
Obrigado a todas as pessoas que contribuíram para a detecção!
Como mencionado em...
Para Detekt 2.0 e além!
droidcon Londres 2021 - Detekt - Estado da União
KotlinConf 2018 - Safe(r) Kotlin Code - Ferramentas de análise estática para Kotlin por Marvin Ramin
droidcon NYC 2018 - Análise de código estático para Kotlin
Kotlin em ferramentas de qualidade de código - por @vanniktech Apresentação de slides
Integrando detecção no fluxo de trabalho
Verifique a qualidade do código Kotlin
Ferramentas de análise estática Kotlin
Você ainda está sentindo o cheiro?: Um estudo comparativo entre a linguagem Java e Kotlin por Flauzino et al.
Prevenindo antipadrões de software com Detekt
Integrações:
Integração IntelliJ
Integração SonarQube
Integração TCA (Tencent CodeAnalysis)
Codacia
Plugin Gradle que configura Error Prone, Checkstyle, PMD, CPD, Lint, Detekt e Ktlint
Violations Lib é uma biblioteca Java para analisar arquivos de relatório, como análise de código estático.
sputnik é uma ferramenta gratuita para revisão de código estático e fornece suporte para detecção
Plug-in Detekt Maven que envolve o Detekt CLI
Plug-in Detekt Bazel que envolve o Detekt CLI
Plug-in Gradle que ajuda a facilitar a verificação de PR do GitHub e comentários automáticos de violações
Fator de código
Ação do GitHub: detectar tudo
Ação do GitHub: detecção de configuração
Regras e relatórios personalizados de terceiros podem ser encontrados em nosso Detekt Marketplace .
JetBrains - Criando IntelliJ + Kotlin
PMD & Checkstyle & ktlint – Ideias para valores limite e regras de estilo