mirror of
https://github.com/realm/SwiftLint.git
synced 2026-05-07 20:12:49 +00:00
82cad0bfff
This allows to infer names of options from their names in a configuration. CamelCase is translated into snake_case automatically when `apply` is triggered. * Don't have all `RuleConfiguration`s conform to `InlinableOptionType`. Mark types that must have this capability explicitly. Same for `AcceptableByConfigurationElement`. * A type being an `InlinableOptionType` doesn't mean it's automatically inlined. This also doesn't depend on the fact of having a name for its key configured any longer. Instead, an `inline` attribute must explicitly be set to `true` in `@ConfigurationElement`. * Key name inference is optional and can be overwritten by specifying a key name in the attribute. * Inlined configurations only fail in `apply` when they are really sure that something is odd. Otherwise, they accept to not being updated.
19 lines
897 B
Swift
19 lines
897 B
Swift
import SwiftLintCore
|
|
|
|
@AutoApply
|
|
struct IdentifierNameConfiguration: RuleConfiguration {
|
|
typealias Parent = IdentifierNameRule
|
|
|
|
private static let defaultOperators = ["/", "=", "-", "+", "!", "*", "|", "^", "~", "?", ".", "%", "<", ">", "&"]
|
|
|
|
@ConfigurationElement(inline: true)
|
|
private(set) var nameConfiguration = NameConfiguration<Parent>(minLengthWarning: 3,
|
|
minLengthError: 2,
|
|
maxLengthWarning: 40,
|
|
maxLengthError: 60,
|
|
excluded: ["id"])
|
|
|
|
@ConfigurationElement(key: "additional_operators", postprocessor: { $0.formUnion(Self.defaultOperators) })
|
|
private(set) var additionalOperators = Set<String>()
|
|
}
|