forked from detekt/detekt
/
DefaultPropertiesConfigValidator.kt
27 lines (24 loc) · 1.21 KB
/
DefaultPropertiesConfigValidator.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
package io.gitlab.arturbosch.detekt.core.config.validation
import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.ConfigValidator
import io.gitlab.arturbosch.detekt.api.Notification
import io.gitlab.arturbosch.detekt.api.internal.CommaSeparatedPattern
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
import io.gitlab.arturbosch.detekt.core.ProcessingSettings
import io.gitlab.arturbosch.detekt.core.rules.RuleSetLocator
internal class DefaultPropertiesConfigValidator(
private val settings: ProcessingSettings,
private val baseline: Config,
) : ConfigValidator {
override fun validate(config: Config): Collection<Notification> {
fun patterns(): Set<Regex> {
val pluginExcludes = RuleSetLocator(settings).load()
.filter { it !is DefaultRuleSetProvider }
.joinToString(",") { "${it.ruleSetId}.*" }
val configExcludes = config.subConfig("config").valueOrDefault("excludes", "")
val allExcludes = "$configExcludes,$DEFAULT_PROPERTY_EXCLUDES,$pluginExcludes"
return CommaSeparatedPattern(allExcludes).mapToRegex()
}
return validateConfig(config, baseline, patterns())
}
}