Este é um plug -in para o DetEkt, um analisador de código estático para Kotlin, que permite a verificação de que classes de concreto são implementadas conforme especificado de acordo com as anotações aplicadas aos tipos de base .
As seguintes regras de detecção estão incluídas:
DataClass : exige que as classes estendidas sejam classes de dados ou declarações de objetos. Isso garante uma implementação padrão previsível para implementações equals e hashcode , ou seja, igualdade de valor em vez de igualdade referencial.Immutable : requer classes ou aulas de extensão para serem imutáveis; Eles podem não conter propriedades mutáveis (VAR) ou propriedades de tipos mutáveis (tipos com propriedades VAR).Devido à natureza deste plug -in, é usado um sabor específico do versão semântica, o que faz mais sentido para os linheiros. Qualquer atualização menor pode relatar mais erros do que a versão anterior.
Carregue o plug -in através do bloco de configuração do DetEkt Gradle:
Groovy dsl
detekt {
dependencies {
detektPlugins " dk.cachet.detekt.extensions:detekt-verify-implementation:1.2.5 "
}
} Como esse plug -in usa resolução de tipo, as regras não serão executadas ao usar a tarefa básica detekt . Use detektMain ou uma tarefa personalizada, conforme a documentação do DetEkt.
Por padrão, as regras não são ativadas no arquivo de configuração de detecção. Para ativar uma regra, defina -a para active e especificar o nome totalmente qualificado da annotationClass , que determina quais classes concretas verificar. Por exemplo:
verify-implementation :
DataClass :
active : true
annotationClass : " dk.cachet.carp.common.ImplementAsDataClass "
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable " Caso a classe de anotação não possa ser encontrada e a regra esteja ativa, uma IllegalStateException será lançada.
Usando assumeNoAnnotations , você pode especificar uma lista de nomes de tipos totalmente qualificados para os quais se supõe que eles não tenham a anotação aplicada a eles. Isso pode ser útil quando o plug -in não analisa as classes que são conhecidas por não transportar a anotação.
verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
assumeNoAnnotations : ['kotlin.Any']As opções adicionais de configuração específicas de regras são descritas a seguir.
assumeImmutable pode listar nomes de classe totalmente qualificados que não serão verificados e assumidos como imutáveis. Isso pode ser útil quando o plug -in não analisa as classes que você sabe ser imutável. Exemplo de configuração: verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
includes : ['**/domain/**']
assumeImmutable : [
' dk.cachet.carp.common.DateTime ' ,
' kotlinx.serialization.json.Json '
]