mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
e63e8cad0f
This PR adds a new `unused_declaration` analyzer rule to lint for unused declarations. By default, detects unused `fileprivate`, `private` and `internal` declarations. Configure the rule with `include_public_and_open: true` to also detect unused `public` and `open` declarations. Completely remove the `unused_private_declaration` rule. This is built on the work enabling collecting rule infrastructure in https://github.com/realm/SwiftLint/pull/2714.
44 lines
1.6 KiB
Swift
44 lines
1.6 KiB
Swift
private enum ConfigurationKey: String {
|
|
case severity = "severity"
|
|
case includePublicAndOpen = "include_public_and_open"
|
|
}
|
|
|
|
public struct UnusedDeclarationConfiguration: RuleConfiguration, Equatable {
|
|
private(set) var includePublicAndOpen: Bool
|
|
private(set) var severity: ViolationSeverity
|
|
|
|
public var consoleDescription: String {
|
|
return "\(ConfigurationKey.severity.rawValue): \(severity.rawValue), " +
|
|
"\(ConfigurationKey.includePublicAndOpen.rawValue): \(includePublicAndOpen)"
|
|
}
|
|
|
|
public init(severity: ViolationSeverity, includePublicAndOpen: Bool) {
|
|
self.includePublicAndOpen = includePublicAndOpen
|
|
self.severity = severity
|
|
}
|
|
|
|
public mutating func apply(configuration: Any) throws {
|
|
guard let configDict = configuration as? [String: Any], !configDict.isEmpty else {
|
|
throw ConfigurationError.unknownConfiguration
|
|
}
|
|
|
|
for (string, value) in configDict {
|
|
guard let key = ConfigurationKey(rawValue: string) else {
|
|
throw ConfigurationError.unknownConfiguration
|
|
}
|
|
switch (key, value) {
|
|
case (.severity, let stringValue as String):
|
|
if let severityValue = ViolationSeverity(rawValue: stringValue) {
|
|
severity = severityValue
|
|
} else {
|
|
throw ConfigurationError.unknownConfiguration
|
|
}
|
|
case (.includePublicAndOpen, let boolValue as Bool):
|
|
includePublicAndOpen = boolValue
|
|
default:
|
|
throw ConfigurationError.unknownConfiguration
|
|
}
|
|
}
|
|
}
|
|
}
|