mirror of
https://github.com/realm/SwiftLint.git
synced 2026-05-07 20:12:49 +00:00
36 lines
1.4 KiB
Swift
36 lines
1.4 KiB
Swift
/// A rule configuration that allows specifying the desired severity level for violations.
|
|
public struct SeverityConfiguration<Parent: Rule>: SeverityBasedRuleConfiguration, InlinableOptionType, Sendable {
|
|
/// Configuration with a warning severity.
|
|
public static var error: Self { Self(.error) }
|
|
/// Configuration with an error severity.
|
|
public static var warning: Self { Self(.warning) }
|
|
|
|
@ConfigurationElement(key: "severity")
|
|
var severity = ViolationSeverity.warning
|
|
|
|
public var severityConfiguration: Self {
|
|
self
|
|
}
|
|
|
|
/// Create a `SeverityConfiguration` with the specified severity.
|
|
///
|
|
/// - parameter severity: The severity that should be used when emitting violations.
|
|
public init(_ severity: ViolationSeverity) {
|
|
self.severity = severity
|
|
}
|
|
|
|
public mutating func apply(configuration: Any) throws(Issue) {
|
|
let configString = configuration as? String
|
|
let configDict = configuration as? [String: Any]
|
|
if let severityString: String = configString ?? configDict?[$severity.key] as? String {
|
|
if let severity = ViolationSeverity(rawValue: severityString.lowercased()) {
|
|
self.severity = severity
|
|
} else {
|
|
throw .invalidConfiguration(ruleID: Parent.identifier)
|
|
}
|
|
} else {
|
|
throw .nothingApplied(ruleID: Parent.identifier)
|
|
}
|
|
}
|
|
}
|