mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-02 10:16:50 +01:00
Add detekt - static code analysis tool for Kotlin.
Signed-off-by: Yahor Berdnikau <egorr.berd@gmail.com>
This commit is contained in:
parent
61de665997
commit
07c2bfaeaf
15
build.gradle
15
build.gradle
@ -4,18 +4,27 @@ buildscript {
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url "https://plugins.gradle.org/m2/"
|
||||
}
|
||||
maven { url "https://plugins.gradle.org/m2/" }
|
||||
}
|
||||
dependencies {
|
||||
classpath gradlePlugins.androidTools
|
||||
classpath gradlePlugins.kotlin
|
||||
classpath gradlePlugins.ktlintGradle
|
||||
classpath(gradlePlugins.detekt) {
|
||||
exclude module: 'kotlin-compiler-embeddable'
|
||||
exclude module: 'kotlin-stdlib'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
// Buildscript here is required by detekt
|
||||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ ext.versions = [
|
||||
androidTools : "2.3.3",
|
||||
ktlint : "0.9.0",
|
||||
ktlintGradle : "2.1.0",
|
||||
detekt : "1.0.0.M13.2",
|
||||
|
||||
androidSupport : "22.2.1",
|
||||
|
||||
@ -26,6 +27,7 @@ ext.gradlePlugins = [
|
||||
androidTools : "com.android.tools.build:gradle:$versions.androidTools",
|
||||
kotlin : "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin",
|
||||
ktlintGradle : "gradle.plugin.org.jlleitschuh.gradle:ktlint-gradle:$versions.ktlintGradle",
|
||||
detekt : "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:$versions.detekt",
|
||||
]
|
||||
|
||||
ext.androidSupport = [
|
||||
@ -45,7 +47,7 @@ ext.other = [
|
||||
ext.testing = [
|
||||
junit : "junit:junit:$versions.junit",
|
||||
kotlinJunit : "org.jetbrains.kotlin:kotlin-test-junit:$versions.kotlin",
|
||||
kotlinReflect : "org.jetbrains.kotlin:kotlin-reflect:$versions.kotlin",
|
||||
kotlinReflect : "org.jetbrains.kotlin:kotlin-reflect:$versions.kotlin",
|
||||
mockitoKotlin : "com.nhaarman:mockito-kotlin:$versions.mockitoKotlin",
|
||||
kluent : "org.amshove.kluent:kluent:$versions.kluent",
|
||||
mockWebServer : "com.squareup.okhttp3:mockwebserver:$versions.okhttp",
|
||||
|
111
detekt-config.yml
Normal file
111
detekt-config.yml
Normal file
@ -0,0 +1,111 @@
|
||||
autoCorrect: true
|
||||
failFast: false
|
||||
|
||||
build:
|
||||
warningThreshold: 0
|
||||
failThreshold: 0
|
||||
weights:
|
||||
complexity: 2
|
||||
formatting: 1
|
||||
LongParameterList: 1
|
||||
comments: 1
|
||||
|
||||
potential-bugs:
|
||||
active: true
|
||||
DuplicateCaseInWhenExpression:
|
||||
active: true
|
||||
EqualsWithHashCodeExist:
|
||||
active: true
|
||||
ExplicitGarbageCollectionCall:
|
||||
active: true
|
||||
LateinitUsage:
|
||||
active: false
|
||||
UnsafeCallOnNullableType:
|
||||
active: false
|
||||
UnsafeCast:
|
||||
active: false
|
||||
|
||||
performance:
|
||||
active: true
|
||||
ForEachOnRange:
|
||||
active: true
|
||||
SpreadOperator:
|
||||
active: true
|
||||
|
||||
exceptions:
|
||||
active: true
|
||||
|
||||
empty-blocks:
|
||||
active: true
|
||||
|
||||
complexity:
|
||||
active: true
|
||||
LongMethod:
|
||||
threshold: 20
|
||||
LongParameterList:
|
||||
threshold: 5
|
||||
LargeClass:
|
||||
threshold: 150
|
||||
ComplexMethod:
|
||||
threshold: 10
|
||||
TooManyFunctions:
|
||||
threshold: 10
|
||||
ComplexCondition:
|
||||
threshold: 3
|
||||
LabeledExpression:
|
||||
active: false
|
||||
|
||||
code-smell:
|
||||
active: true
|
||||
FeatureEnvy:
|
||||
threshold: 0.5
|
||||
weight: 0.45
|
||||
base: 0.5
|
||||
|
||||
formatting:
|
||||
active: false
|
||||
|
||||
style:
|
||||
active: true
|
||||
NewLineAtEndOfFile:
|
||||
active: true
|
||||
ForbiddenComment:
|
||||
active: true
|
||||
values: 'TODO:,FIXME:,STOPSHIP:'
|
||||
WildcardImport:
|
||||
active: true
|
||||
MaxLineLength:
|
||||
active: true
|
||||
maxLineLength: 120
|
||||
excludePackageStatements: false
|
||||
excludeImportStatements: false
|
||||
NamingConventionViolation:
|
||||
active: true
|
||||
variablePattern: '^(_)?[a-z$][a-zA-Z$0-9]*$'
|
||||
constantPattern: '^([A-Z_]*|serialVersionUID)$'
|
||||
methodPattern: '^[a-z\s`$][a-zA-Z\s$0-9`]*$'
|
||||
classPattern: '[A-Z$][a-zA-Z$]*'
|
||||
enumEntryPattern: '^[A-Z$][a-zA-Z_$0-9]*$'
|
||||
|
||||
comments:
|
||||
active: true
|
||||
CommentOverPrivateMethod:
|
||||
active: true
|
||||
CommentOverPrivateProperty:
|
||||
active: true
|
||||
UndocumentedPublicClass:
|
||||
active: false
|
||||
searchInNestedClass: true
|
||||
searchInInnerClass: true
|
||||
searchInInnerInterface: true
|
||||
UndocumentedPublicFunction:
|
||||
active: false
|
||||
|
||||
# *experimental feature*
|
||||
# Migration rules can be defined in the same config file or a new one
|
||||
migration:
|
||||
active: false
|
||||
imports:
|
||||
# your.package.Class: new.package.or.Class
|
||||
# for example:
|
||||
# io.gitlab.arturbosch.detekt.api.Rule: io.gitlab.arturbosch.detekt.rule.Rule
|
@ -1,10 +1,28 @@
|
||||
// Applies code quality plugins when -Pqc is passed to the gradle
|
||||
def isCodeQualityEnabled = project.hasProperty('qc')
|
||||
|
||||
// KtLint
|
||||
if (isCodeQualityEnabled) {
|
||||
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
||||
|
||||
ktlint {
|
||||
version = versions.ktlint
|
||||
}
|
||||
}
|
||||
|
||||
// Detekt
|
||||
if (isCodeQualityEnabled) {
|
||||
if (!project.rootProject.plugins.hasPlugin("io.gitlab.arturbosch.detekt")) {
|
||||
Project rootProject = project.rootProject
|
||||
rootProject.apply {
|
||||
apply plugin: "io.gitlab.arturbosch.detekt"
|
||||
|
||||
detekt {
|
||||
version = versions.detekt
|
||||
profile("main") {
|
||||
config = "${rootProject.projectDir}/detekt-config.yml"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user