mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-09 00:08:43 +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 {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
maven {
|
maven { url "https://plugins.gradle.org/m2/" }
|
||||||
url "https://plugins.gradle.org/m2/"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath gradlePlugins.androidTools
|
classpath gradlePlugins.androidTools
|
||||||
classpath gradlePlugins.kotlin
|
classpath gradlePlugins.kotlin
|
||||||
classpath gradlePlugins.ktlintGradle
|
classpath gradlePlugins.ktlintGradle
|
||||||
|
classpath(gradlePlugins.detekt) {
|
||||||
|
exclude module: 'kotlin-compiler-embeddable'
|
||||||
|
exclude module: 'kotlin-stdlib'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
// Buildscript here is required by detekt
|
||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
jcenter()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ ext.versions = [
|
|||||||
androidTools : "2.3.3",
|
androidTools : "2.3.3",
|
||||||
ktlint : "0.9.0",
|
ktlint : "0.9.0",
|
||||||
ktlintGradle : "2.1.0",
|
ktlintGradle : "2.1.0",
|
||||||
|
detekt : "1.0.0.M13.2",
|
||||||
|
|
||||||
androidSupport : "22.2.1",
|
androidSupport : "22.2.1",
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ ext.gradlePlugins = [
|
|||||||
androidTools : "com.android.tools.build:gradle:$versions.androidTools",
|
androidTools : "com.android.tools.build:gradle:$versions.androidTools",
|
||||||
kotlin : "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin",
|
kotlin : "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin",
|
||||||
ktlintGradle : "gradle.plugin.org.jlleitschuh.gradle:ktlint-gradle:$versions.ktlintGradle",
|
ktlintGradle : "gradle.plugin.org.jlleitschuh.gradle:ktlint-gradle:$versions.ktlintGradle",
|
||||||
|
detekt : "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:$versions.detekt",
|
||||||
]
|
]
|
||||||
|
|
||||||
ext.androidSupport = [
|
ext.androidSupport = [
|
||||||
|
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,6 +1,7 @@
|
|||||||
// Applies code quality plugins when -Pqc is passed to the gradle
|
// Applies code quality plugins when -Pqc is passed to the gradle
|
||||||
def isCodeQualityEnabled = project.hasProperty('qc')
|
def isCodeQualityEnabled = project.hasProperty('qc')
|
||||||
|
|
||||||
|
// KtLint
|
||||||
if (isCodeQualityEnabled) {
|
if (isCodeQualityEnabled) {
|
||||||
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
||||||
|
|
||||||
@ -8,3 +9,20 @@ if (isCodeQualityEnabled) {
|
|||||||
version = versions.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