/
RuleSetConfigPrinter.kt
52 lines (42 loc) · 1.85 KB
/
RuleSetConfigPrinter.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
51
52
package io.gitlab.arturbosch.detekt.generator.printer.defaultconfig
import io.github.detekt.utils.YamlNode
import io.github.detekt.utils.keyValue
import io.github.detekt.utils.node
import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.generator.collection.Configuration
import io.gitlab.arturbosch.detekt.generator.collection.Rule
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetPage
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetProvider
internal fun YamlNode.printRuleSetPage(ruleSetPage: RuleSetPage) {
printRuleSet(ruleSetPage.ruleSet, ruleSetPage.rules)
}
internal fun YamlNode.printRuleSet(ruleSet: RuleSetProvider, rules: List<Rule>) {
node(ruleSet.name) {
keyValue { Config.ACTIVE_KEY to "${ruleSet.defaultActivationStatus.active}" }
val ruleSetExclusion = exclusions.singleOrNull { ruleSet.name in it.ruleSets }
if (ruleSetExclusion != null) {
keyValue { Config.EXCLUDES_KEY to ruleSetExclusion.pattern }
}
ruleSet.configuration.forEach(::printConfiguration)
rules.forEach(::printRule)
emptyLine()
}
}
internal fun YamlNode.printRule(rule: Rule) {
if (rule.isDeprecated()) return
node(rule.name) {
keyValue { Config.ACTIVE_KEY to "${rule.defaultActivationStatus.active}" }
if (rule.autoCorrect) {
keyValue { Config.AUTO_CORRECT_KEY to "true" }
}
val ruleExclusion = exclusions.singleOrNull { it.isExcluded(rule) }
if (ruleExclusion != null) {
keyValue { Config.EXCLUDES_KEY to ruleExclusion.pattern }
}
rule.configuration.forEach(::printConfiguration)
}
}
internal fun YamlNode.printConfiguration(configuration: Configuration) {
if (configuration.isDeprecated()) return
configuration.defaultValue.printAsYaml(configuration.name, this)
}