/
NamingRules.kt
50 lines (43 loc) · 1.99 KB
/
NamingRules.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package io.gitlab.arturbosch.detekt.rules.naming
import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Rule
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtProperty
class NamingRules(config: Config = Config.empty) :
@Suppress("DEPRECATION")
io.gitlab.arturbosch.detekt.api.MultiRule() {
private val variableMinNameLengthRule = VariableMinLength(config)
private val variableMaxNameLengthRule = VariableMaxLength(config)
private val nonBooleanPropertyPrefixedWithIsRule = NonBooleanPropertyPrefixedWithIs(config)
private val functionMaxNameLengthRule = FunctionMaxLength(config)
private val functionMinNameLengthRule = FunctionMinLength(config)
override val rules: List<Rule> = listOf(
variableMinNameLengthRule,
variableMaxNameLengthRule,
nonBooleanPropertyPrefixedWithIsRule,
functionMaxNameLengthRule,
functionMinNameLengthRule,
)
override fun visitNamedDeclaration(declaration: KtNamedDeclaration) {
if (declaration.nameAsSafeName.isSpecial) {
return
}
if (declaration.nameIdentifier?.parent?.javaClass != null) {
when (declaration) {
is KtProperty -> handleProperty(declaration)
is KtNamedFunction -> handleFunction(declaration)
}
}
super.visitNamedDeclaration(declaration)
}
private fun handleFunction(declaration: KtNamedFunction) {
functionMaxNameLengthRule.runIfActive { visitNamedFunction(declaration) }
functionMinNameLengthRule.runIfActive { visitNamedFunction(declaration) }
}
private fun handleProperty(declaration: KtProperty) {
variableMaxNameLengthRule.runIfActive { visitProperty(declaration) }
variableMinNameLengthRule.runIfActive { visitProperty(declaration) }
nonBooleanPropertyPrefixedWithIsRule.runIfActive { visitProperty(declaration) }
}
}