forked from detekt/detekt
/
AbstractYamlConfigValidator.kt
30 lines (24 loc) · 1.03 KB
/
AbstractYamlConfigValidator.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
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.core.config.YamlConfig
internal abstract class AbstractYamlConfigValidator(
val excludePatterns: Set<Regex> = emptySet(),
) : ConfigValidator {
override fun validate(config: Config): Collection<Notification> {
require(config is YamlConfig) {
val yamlConfigClass = YamlConfig::class.simpleName
val actualClass = config.javaClass.simpleName
"Only supported config is the $yamlConfigClass. Actual type is $actualClass"
}
val settings = ValidationSettings(
config.subConfig("config").valueOrDefault("checkExhaustiveness", false),
)
return validate(config, settings)
}
abstract fun validate(
configToValidate: YamlConfig,
settings: ValidationSettings
): Collection<Notification>
}