mirror of
https://github.com/realm/SwiftLint.git
synced 2026-05-07 20:12:49 +00:00
Infer name of parent rule in configurations (#6363)
This commit is contained in:
@@ -3,7 +3,7 @@ import SwiftSyntaxBuilder
|
||||
|
||||
@SwiftSyntaxRule(explicitRewriter: true)
|
||||
struct UnneededOverrideRule: Rule {
|
||||
var configuration = UnneededOverrideRuleConfiguration()
|
||||
var configuration = UnneededOverrideConfiguration()
|
||||
|
||||
static let description = RuleDescription(
|
||||
identifier: "unneeded_override",
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct AttributesConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = AttributesRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "attributes_with_arguments_always_on_line_above")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct BlanketDisableCommandConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = BlanketDisableCommandRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "allowed_rules")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct CollectionAlignmentConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = CollectionAlignmentRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "align_colons")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ColonConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ColonRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "flexible_right_spacing")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ComputedAccessorsOrderConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ComputedAccessorsOrderRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum Order: String {
|
||||
case getSet = "get_set"
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ConditionalReturnsOnNewlineConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ConditionalReturnsOnNewlineRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "if_only")
|
||||
|
||||
-2
@@ -3,8 +3,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct CyclomaticComplexityConfiguration: RuleConfiguration {
|
||||
typealias Parent = CyclomaticComplexityRule
|
||||
|
||||
@ConfigurationElement(inline: true)
|
||||
private(set) var length = SeverityLevelsConfiguration<Parent>(warning: 10, error: 20)
|
||||
@ConfigurationElement(key: "ignores_case_statements")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct DiscouragedDirectInitConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = DiscouragedDirectInitRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct EmptyCountConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = EmptyCountRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.error)
|
||||
@ConfigurationElement(key: "only_after_dot")
|
||||
|
||||
@@ -2,7 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ExpiringTodoConfiguration: RuleConfiguration {
|
||||
typealias Parent = ExpiringTodoRule
|
||||
typealias Severity = SeverityConfiguration<Parent>
|
||||
|
||||
struct DelimiterConfiguration: Equatable, AcceptableByConfigurationElement {
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
@AutoConfigParser
|
||||
struct ExplicitInitConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ExplicitInitRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "include_bare_init")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ExplicitTypeInterfaceConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ExplicitTypeInterfaceRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum VariableKind: String, CaseIterable {
|
||||
case instance
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct FileLengthConfiguration: RuleConfiguration {
|
||||
typealias Parent = FileLengthRule
|
||||
|
||||
@ConfigurationElement(inline: true)
|
||||
private(set) var severityConfiguration = SeverityLevelsConfiguration<Parent>(warning: 400, error: 1000)
|
||||
@ConfigurationElement(key: "ignore_comment_only_lines")
|
||||
|
||||
@@ -4,8 +4,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct FileNameConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = FileNameRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "excluded")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct FileNameNoSpaceConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = FileNameNoSpaceRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>.warning
|
||||
@ConfigurationElement(key: "excluded")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct FileTypesOrderConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = FileTypesOrderRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum FileType: String {
|
||||
case supportingType = "supporting_type"
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ForWhereConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ForWhereRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "allow_for_as_filter")
|
||||
|
||||
-2
@@ -4,8 +4,6 @@ import SwiftLintCore
|
||||
struct FunctionDefaultParameterAtEndConfiguration: SeverityBasedRuleConfiguration {
|
||||
// swiftlint:disable:previous type_name
|
||||
|
||||
typealias Parent = FunctionDefaultParameterAtEndRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "ignore_first_isolation_inheritance_parameter")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct FunctionNameWhitespaceConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = FunctionNameWhitespaceRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "generic_spacing")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct FunctionParameterCountConfiguration: RuleConfiguration {
|
||||
typealias Parent = FunctionParameterCountRule
|
||||
|
||||
@ConfigurationElement(inline: true)
|
||||
private(set) var severityConfiguration = SeverityLevelsConfiguration<Parent>(warning: 5, error: 8)
|
||||
@ConfigurationElement(key: "ignores_default_parameters")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct IdentifierNameConfiguration: RuleConfiguration {
|
||||
typealias Parent = IdentifierNameRule
|
||||
|
||||
private static let defaultOperators = ["/", "=", "-", "+", "!", "*", "|", "^", "~", "?", ".", "%", "<", ">", "&"]
|
||||
|
||||
@ConfigurationElement(inline: true)
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ImplicitOptionalInitializationConfiguration: SeverityBasedRuleConfiguration { // swiftlint:disable:this type_name
|
||||
typealias Parent = ImplicitOptionalInitializationRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum Style: String {
|
||||
case always
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ImplicitReturnConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ImplicitReturnRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum ReturnKind: String, CaseIterable, Comparable {
|
||||
case closure
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ImplicitlyUnwrappedOptionalConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ImplicitlyUnwrappedOptionalRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum ImplicitlyUnwrappedOptionalModeConfiguration: String { // swiftlint:disable:this type_name
|
||||
case all = "all"
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct InclusiveLanguageConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = InclusiveLanguageRule
|
||||
|
||||
private static let defaultTerms: Set<String> = [
|
||||
"whitelist",
|
||||
"blacklist",
|
||||
|
||||
-2
@@ -4,8 +4,6 @@ import SwiftLintCore
|
||||
struct IncompatibleConcurrencyAnnotationConfiguration: SeverityBasedRuleConfiguration {
|
||||
// swiftlint:disable:previous type_name
|
||||
|
||||
typealias Parent = IncompatibleConcurrencyAnnotationRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "global_actors", postprocessor: { $0.insert("MainActor") })
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct IndentationWidthConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = IndentationWidthRule
|
||||
|
||||
private static let defaultIndentationWidth = 4
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct LegacyObjcTypeConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = LegacyObjcTypeRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>.warning
|
||||
@ConfigurationElement(key: "allowed_types")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct LineLengthConfiguration: RuleConfiguration {
|
||||
typealias Parent = LineLengthRule
|
||||
|
||||
@ConfigurationElement(inline: true)
|
||||
private(set) var length = SeverityLevelsConfiguration<Parent>(warning: 120, error: 200)
|
||||
@ConfigurationElement(key: "ignores_urls")
|
||||
|
||||
@@ -3,8 +3,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ModifierOrderConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ModifierOrderRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "preferred_modifier_order")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct MultilineArgumentsConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = MultilineArgumentsRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum FirstArgumentLocation: String {
|
||||
case anyLine = "any_line"
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct MultilineCallArgumentsConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = MultilineCallArgumentsRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "allows_single_line")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct MultilineParametersConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = MultilineParametersRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "allows_single_line")
|
||||
|
||||
@@ -2,7 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct NestingConfiguration: RuleConfiguration {
|
||||
typealias Parent = NestingRule
|
||||
typealias Severity = SeverityLevelsConfiguration<Parent>
|
||||
|
||||
@ConfigurationElement(key: "type_level")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct NoEmptyBlockConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = NoEmptyBlockRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum CodeBlockType: String, CaseIterable {
|
||||
case functionBodies = "function_bodies"
|
||||
|
||||
-2
@@ -1,7 +1,5 @@
|
||||
@AutoConfigParser
|
||||
struct NoMagicNumbersConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = NoMagicNumbersRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(
|
||||
|
||||
-1
@@ -3,7 +3,6 @@ import SwiftLintCore
|
||||
@AutoConfigParser
|
||||
struct NonOptionalStringDataConversionConfiguration: SeverityBasedRuleConfiguration {
|
||||
// swiftlint:disable:previous type_name
|
||||
typealias Parent = NonOptionalStringDataConversionRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser // swiftlint:disable:next type_name
|
||||
struct NonOverridableClassDeclarationConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = NonOverridableClassDeclarationRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum FinalClassModifier: String {
|
||||
case finalClass = "final class"
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct NumberSeparatorConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = NumberSeparatorRule
|
||||
|
||||
struct ExcludeRange: AcceptableByConfigurationElement, Equatable {
|
||||
private let min: Double
|
||||
private let max: Double
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct OpeningBraceConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = OpeningBraceRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "ignore_multiline_type_headers")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct OperatorUsageWhitespaceConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = OperatorUsageWhitespaceRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "lines_look_around")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct OverriddenSuperCallConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = OverriddenSuperCallRule
|
||||
|
||||
private static let defaultIncluded = [
|
||||
// NSObject
|
||||
"awakeFromNib()",
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct PreferKeyPathConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = PreferKeyPathRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "restrict_to_standard_functions")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct PrefixedTopLevelConstantConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = PrefixedTopLevelConstantRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "only_private")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct PrivateOutletConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = PrivateOutletRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "allow_private_set")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct PrivateOverFilePrivateConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = PrivateOverFilePrivateRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "validate_extensions")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ProhibitedSuperConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ProhibitedSuperRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "excluded")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct RedundantDiscardableLetConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = RedundantDiscardableLetRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "ignore_swiftui_view_bodies")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct RedundantSendableConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = RedundantSendableRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "global_actors")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct RedundantTypeAnnotationConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = RedundantTypeAnnotationRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "ignore_attributes")
|
||||
|
||||
-2
@@ -1,7 +1,5 @@
|
||||
@AutoConfigParser
|
||||
struct RedundantVoidReturnConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = RedundantVoidReturnRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "include_closures")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct SelfBindingConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = SelfBindingRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "bind_identifier")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct ShorthandArgumentConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = ShorthandArgumentRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "allow_until_line_after_opening_brace")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct SortedImportsConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = SortedImportsRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum Grouping: String {
|
||||
/// Sorts import lines based on any import attributes (e.g. `@testable`, `@_exported`, etc.), followed by a case
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct StatementPositionConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = StatementPositionRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum StatementModeConfiguration: String {
|
||||
case `default` = "default"
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct SwitchCaseAlignmentConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = SwitchCaseAlignmentRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "indented_cases")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct TestCaseAccessibilityConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = TestCaseAccessibilityRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "allowed_prefixes")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct TodoConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = TodoRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum TodoKeyword: String, CaseIterable {
|
||||
case todo = "TODO"
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct TrailingClosureConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = TrailingClosureRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "only_single_muted_parameter")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct TrailingCommaConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = TrailingCommaRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "mandatory_comma")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct TrailingWhitespaceConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = TrailingWhitespaceRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "ignores_empty_lines")
|
||||
|
||||
-2
@@ -16,8 +16,6 @@ enum TypeBodyLengthCheckType: String, CaseIterable, Comparable {
|
||||
|
||||
@AutoConfigParser
|
||||
struct TypeBodyLengthConfiguration: SeverityLevelsBasedRuleConfiguration {
|
||||
typealias Parent = TypeBodyLengthRule
|
||||
|
||||
@ConfigurationElement(inline: true)
|
||||
private(set) var severityConfiguration = SeverityLevelsConfiguration<Parent>(warning: 250, error: 350)
|
||||
@ConfigurationElement(key: "excluded_types")
|
||||
|
||||
-2
@@ -22,8 +22,6 @@ enum TypeContent: String {
|
||||
|
||||
@AutoConfigParser
|
||||
struct TypeContentsOrderConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = TypeContentsOrderRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "order")
|
||||
|
||||
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct TypeNameConfiguration: RuleConfiguration {
|
||||
typealias Parent = TypeNameRule
|
||||
|
||||
@ConfigurationElement(inline: true)
|
||||
private(set) var nameConfiguration = NameConfiguration<Parent>(minLengthWarning: 3,
|
||||
minLengthError: 0,
|
||||
|
||||
+1
-3
@@ -1,9 +1,7 @@
|
||||
import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct UnneededOverrideRuleConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = UnneededOverrideRule
|
||||
|
||||
struct UnneededOverrideConfiguration: SeverityBasedRuleConfiguration {
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "affect_initializers")
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct UnusedDeclarationConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = UnusedDeclarationRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>.error
|
||||
@ConfigurationElement(key: "include_public_and_open")
|
||||
|
||||
@@ -29,8 +29,6 @@ struct TransitiveModuleConfiguration<Parent: Rule>: Equatable, AcceptableByConfi
|
||||
|
||||
@AutoConfigParser
|
||||
struct UnusedImportConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = UnusedImportRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>.warning
|
||||
@ConfigurationElement(key: "require_explicit_imports")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct UnusedOptionalBindingConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = UnusedOptionalBindingRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "ignore_optional_try")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser // swiftlint:disable:next type_name
|
||||
struct VerticalWhitespaceBetweenCasesConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = VerticalWhitespaceBetweenCasesRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum SeparationStyle: String {
|
||||
case always
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser // swiftlint:disable:next type_name
|
||||
struct VerticalWhitespaceClosingBracesConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = VerticalWhitespaceClosingBracesRule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
|
||||
@ConfigurationElement(key: "only_enforce_before_trivial_lines")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct VerticalWhitespaceConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = VerticalWhitespaceRule
|
||||
|
||||
static let defaultDescriptionReason = "Limit vertical whitespace to a single empty line"
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ import SwiftLintCore
|
||||
|
||||
@AutoConfigParser
|
||||
struct XCTSpecificMatcherConfiguration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = XCTSpecificMatcherRule
|
||||
|
||||
@AcceptableByConfigurationElement
|
||||
enum Matcher: String, CaseIterable {
|
||||
case oneArgumentAsserts = "one-argument-asserts"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/// automatically based on the defined `@ConfigurationElement`s.
|
||||
@attached(
|
||||
member,
|
||||
names: named(apply)
|
||||
names: named(apply), named(Parent)
|
||||
)
|
||||
public macro AutoConfigParser() = #externalMacro(
|
||||
module: "SwiftLintCoreMacros",
|
||||
@@ -13,7 +13,7 @@ public macro AutoConfigParser() = #externalMacro(
|
||||
@available(*, deprecated, renamed: "AutoConfigParser")
|
||||
@attached(
|
||||
member,
|
||||
names: named(apply)
|
||||
names: named(apply), named(Parent)
|
||||
)
|
||||
public macro AutoApply() = #externalMacro(
|
||||
module: "SwiftLintCoreMacros",
|
||||
|
||||
@@ -15,6 +15,12 @@ enum AutoConfigParser: MemberMacro {
|
||||
context.diagnose(SwiftLintCoreMacroError.notStruct.diagnose(at: declaration))
|
||||
return []
|
||||
}
|
||||
let name = configuration.name.text
|
||||
guard name.hasSuffix("Configuration"), !name.hasSuffix("RuleConfiguration") else {
|
||||
context.diagnose(SwiftLintCoreMacroError.invalidConfigurationName.diagnose(at: configuration.name))
|
||||
return []
|
||||
}
|
||||
let ruleName = String(name.dropLast("Configuration".count)) + "Rule"
|
||||
var annotatedVarDecls = configuration.memberBlock.members
|
||||
.compactMap {
|
||||
if let varDecl = $0.decl.as(VariableDeclSyntax.self),
|
||||
@@ -48,8 +54,8 @@ enum AutoConfigParser: MemberMacro {
|
||||
context.diagnose(SwiftLintCoreMacroError.severityBasedWithoutProperty.diagnose(at: configuration.name))
|
||||
}
|
||||
}
|
||||
return [
|
||||
DeclSyntax(try FunctionDeclSyntax("mutating func apply(configuration: Any) throws(Issue)") {
|
||||
let applyMethod = DeclSyntax(
|
||||
try FunctionDeclSyntax("mutating func apply(configuration: Any) throws(Issue)") {
|
||||
for option in nonInlinedOptions {
|
||||
"""
|
||||
if $\(raw: option).key.isEmpty {
|
||||
@@ -89,8 +95,12 @@ enum AutoConfigParser: MemberMacro {
|
||||
"""
|
||||
try validate()
|
||||
"""
|
||||
}),
|
||||
]
|
||||
}
|
||||
)
|
||||
if configuration.genericParameterClause?.parameters.contains(where: { $0.name.text == "Parent" }) == true {
|
||||
return [applyMethod]
|
||||
}
|
||||
return [DeclSyntax("typealias Parent = \(raw: ruleName)")] + [applyMethod]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import SwiftSyntax
|
||||
|
||||
enum SwiftLintCoreMacroError: String, DiagnosticMessage {
|
||||
case notStruct = "Attribute can only be applied to structs"
|
||||
case invalidConfigurationName = "Configuration type name must end with 'Configuration', but not 'RuleConfiguration'"
|
||||
case severityBasedWithoutProperty = """
|
||||
Severity-based configuration without a 'severityConfiguration' property is invalid
|
||||
"""
|
||||
|
||||
@@ -225,8 +225,6 @@ private extension SwiftLintDev.Rules.Template {
|
||||
|
||||
@AutoConfigParser
|
||||
struct \(name)Configuration: SeverityBasedRuleConfiguration {
|
||||
typealias Parent = \(name)Rule
|
||||
|
||||
@ConfigurationElement(key: "severity")
|
||||
private(set) var severityConfiguration = SeverityConfiguration<Parent>(.\(severity))
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import TestHelpers
|
||||
import XCTest
|
||||
|
||||
final class ChildOptionSeverityConfigurationTests: SwiftLintTestCase {
|
||||
typealias TesteeType = ChildOptionSeverityConfiguration<RuleMock>
|
||||
typealias TesteeType = ChildOptionSeverityConfiguration<MockRule>
|
||||
|
||||
func testSeverity() {
|
||||
XCTAssertNil(TesteeType.off.severity)
|
||||
|
||||
@@ -3,7 +3,7 @@ import TestHelpers
|
||||
import XCTest
|
||||
|
||||
final class NameConfigurationTests: SwiftLintTestCase {
|
||||
typealias TesteeType = NameConfiguration<RuleMock>
|
||||
typealias TesteeType = NameConfiguration<MockRule>
|
||||
|
||||
func testNameConfigurationSetsCorrectly() {
|
||||
let config: [String: any Sendable] = [
|
||||
@@ -53,7 +53,7 @@ final class NameConfigurationTests: SwiftLintTestCase {
|
||||
minLengthError: 0,
|
||||
maxLengthWarning: 0,
|
||||
maxLengthError: 0)
|
||||
checkError(Issue.invalidConfiguration(ruleID: RuleMock.identifier)) {
|
||||
checkError(Issue.invalidConfiguration(ruleID: MockRule.identifier)) {
|
||||
try nameConfig.apply(configuration: config)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@ import XCTest
|
||||
|
||||
final class RegexConfigurationTests: SwiftLintTestCase {
|
||||
func testShouldValidateIsTrueByDefault() {
|
||||
let config = RegexConfiguration<RuleMock>(identifier: "example")
|
||||
let config = RegexConfiguration<MockRule>(identifier: "example")
|
||||
XCTAssertTrue(config.shouldValidate(filePath: "App/file.swift"))
|
||||
}
|
||||
|
||||
func testShouldValidateWithSingleExluded() throws {
|
||||
var config = RegexConfiguration<RuleMock>(identifier: "example")
|
||||
var config = RegexConfiguration<MockRule>(identifier: "example")
|
||||
try config.apply(configuration: [
|
||||
"regex": "try!",
|
||||
"excluded": "Tests/.*\\.swift",
|
||||
@@ -20,7 +20,7 @@ final class RegexConfigurationTests: SwiftLintTestCase {
|
||||
}
|
||||
|
||||
func testShouldValidateWithArrayExluded() throws {
|
||||
var config = RegexConfiguration<RuleMock>(identifier: "example")
|
||||
var config = RegexConfiguration<MockRule>(identifier: "example")
|
||||
try config.apply(configuration: [
|
||||
"regex": "try!",
|
||||
"excluded": [
|
||||
@@ -35,7 +35,7 @@ final class RegexConfigurationTests: SwiftLintTestCase {
|
||||
}
|
||||
|
||||
func testShouldValidateWithSingleIncluded() throws {
|
||||
var config = RegexConfiguration<RuleMock>(identifier: "example")
|
||||
var config = RegexConfiguration<MockRule>(identifier: "example")
|
||||
try config.apply(configuration: [
|
||||
"regex": "try!",
|
||||
"included": "App/.*\\.swift",
|
||||
@@ -47,7 +47,7 @@ final class RegexConfigurationTests: SwiftLintTestCase {
|
||||
}
|
||||
|
||||
func testShouldValidateWithArrayIncluded() throws {
|
||||
var config = RegexConfiguration<RuleMock>(identifier: "example")
|
||||
var config = RegexConfiguration<MockRule>(identifier: "example")
|
||||
try config.apply(configuration: [
|
||||
"regex": "try!",
|
||||
"included": [
|
||||
@@ -62,7 +62,7 @@ final class RegexConfigurationTests: SwiftLintTestCase {
|
||||
}
|
||||
|
||||
func testShouldValidateWithIncludedAndExcluded() throws {
|
||||
var config = RegexConfiguration<RuleMock>(identifier: "example")
|
||||
var config = RegexConfiguration<MockRule>(identifier: "example")
|
||||
try config.apply(configuration: [
|
||||
"regex": "try!",
|
||||
"included": [
|
||||
|
||||
@@ -7,9 +7,7 @@ import XCTest
|
||||
// swiftlint:disable:next type_body_length
|
||||
final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
@AutoConfigParser
|
||||
private struct TestConfiguration: RuleConfiguration {
|
||||
typealias Parent = RuleMock // swiftlint:disable:this nesting
|
||||
|
||||
private struct MockConfiguration: RuleConfiguration {
|
||||
@ConfigurationElement(key: "flag")
|
||||
var flag = true
|
||||
@ConfigurationElement(key: "string")
|
||||
@@ -47,7 +45,7 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
|
||||
// swiftlint:disable:next function_body_length
|
||||
func testDescriptionFromConfiguration() throws {
|
||||
var configuration = TestConfiguration()
|
||||
var configuration = MockConfiguration()
|
||||
try configuration.apply(configuration: Void()) // Configure to set keys.
|
||||
let description = RuleConfigurationDescription.from(configuration: configuration)
|
||||
|
||||
@@ -223,8 +221,8 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
}
|
||||
|
||||
func testPrefersParameterDescription() {
|
||||
struct Config: RuleConfiguration {
|
||||
typealias Parent = RuleMock // swiftlint:disable:this nesting
|
||||
struct MockConfiguration: RuleConfiguration {
|
||||
typealias Parent = MockRule // swiftlint:disable:this nesting
|
||||
|
||||
var parameterDescription: RuleConfigurationDescription? {
|
||||
"visible" => .flag(true)
|
||||
@@ -238,7 +236,7 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
func isEqualTo(_: some RuleConfiguration) -> Bool { false }
|
||||
}
|
||||
|
||||
let description = RuleConfigurationDescription.from(configuration: Config())
|
||||
let description = RuleConfigurationDescription.from(configuration: MockConfiguration())
|
||||
XCTAssertEqual(description.oneLiner(), "visible: true")
|
||||
XCTAssertEqual(description.markdown(), """
|
||||
<table>
|
||||
@@ -470,7 +468,7 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
}
|
||||
|
||||
func testUpdate() throws {
|
||||
var configuration = TestConfiguration()
|
||||
var configuration = MockConfiguration()
|
||||
|
||||
try configuration.apply(configuration: [
|
||||
"flag": false,
|
||||
@@ -504,7 +502,7 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
|
||||
func testDeprecationWarning() async throws {
|
||||
let console = try await Issue.captureConsole {
|
||||
var configuration = TestConfiguration()
|
||||
var configuration = MockConfiguration()
|
||||
try configuration.apply(configuration: ["set": [6, 7]])
|
||||
}
|
||||
XCTAssertEqual(
|
||||
@@ -515,7 +513,7 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
|
||||
func testNoDeprecationWarningIfNoDeprecatedPropertySet() async throws {
|
||||
let console = try await Issue.captureConsole {
|
||||
var configuration = TestConfiguration()
|
||||
var configuration = MockConfiguration()
|
||||
try configuration.apply(configuration: ["flag": false])
|
||||
}
|
||||
XCTAssertTrue(console.isEmpty)
|
||||
@@ -523,7 +521,7 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
|
||||
func testInvalidKeys() async throws {
|
||||
let console = try await Issue.captureConsole {
|
||||
var configuration = TestConfiguration()
|
||||
var configuration = MockConfiguration()
|
||||
try configuration.apply(configuration: [
|
||||
"severity": "error",
|
||||
"warning": 3,
|
||||
@@ -533,7 +531,7 @@ final class RuleConfigurationDescriptionTests: SwiftLintTestCase {
|
||||
}
|
||||
XCTAssertEqual(
|
||||
console,
|
||||
"warning: Configuration for 'RuleMock' rule contains the invalid key(s) 'unknown', 'unsupported'."
|
||||
"warning: Configuration for 'MockRule' rule contains the invalid key(s) 'unknown', 'unsupported'."
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -52,8 +52,8 @@ final class RuleConfigurationTests: SwiftLintTestCase {
|
||||
|
||||
func testSeverityConfigurationFromString() {
|
||||
let config = "Warning"
|
||||
let comp = SeverityConfiguration<RuleMock>(.warning)
|
||||
var severityConfig = SeverityConfiguration<RuleMock>(.error)
|
||||
let comp = SeverityConfiguration<MockRule>(.warning)
|
||||
var severityConfig = SeverityConfiguration<MockRule>(.error)
|
||||
do {
|
||||
try severityConfig.apply(configuration: config)
|
||||
XCTAssertEqual(severityConfig, comp)
|
||||
@@ -64,8 +64,8 @@ final class RuleConfigurationTests: SwiftLintTestCase {
|
||||
|
||||
func testSeverityConfigurationFromDictionary() {
|
||||
let config = ["severity": "warning"]
|
||||
let comp = SeverityConfiguration<RuleMock>(.warning)
|
||||
var severityConfig = SeverityConfiguration<RuleMock>(.error)
|
||||
let comp = SeverityConfiguration<MockRule>(.warning)
|
||||
var severityConfig = SeverityConfiguration<MockRule>(.error)
|
||||
do {
|
||||
try severityConfig.apply(configuration: config)
|
||||
XCTAssertEqual(severityConfig, comp)
|
||||
@@ -76,22 +76,22 @@ final class RuleConfigurationTests: SwiftLintTestCase {
|
||||
|
||||
func testSeverityConfigurationThrowsNothingApplied() {
|
||||
let config = 17
|
||||
var severityConfig = SeverityConfiguration<RuleMock>(.error)
|
||||
checkError(Issue.nothingApplied(ruleID: RuleMock.identifier)) {
|
||||
var severityConfig = SeverityConfiguration<MockRule>(.error)
|
||||
checkError(Issue.nothingApplied(ruleID: MockRule.identifier)) {
|
||||
try severityConfig.apply(configuration: config)
|
||||
}
|
||||
}
|
||||
|
||||
func testSeverityConfigurationThrowsInvalidConfiguration() {
|
||||
let config = "foo"
|
||||
var severityConfig = SeverityConfiguration<RuleMock>(.warning)
|
||||
checkError(Issue.invalidConfiguration(ruleID: RuleMock.identifier)) {
|
||||
var severityConfig = SeverityConfiguration<MockRule>(.warning)
|
||||
checkError(Issue.invalidConfiguration(ruleID: MockRule.identifier)) {
|
||||
try severityConfig.apply(configuration: config)
|
||||
}
|
||||
}
|
||||
|
||||
func testSeverityLevelConfigParams() {
|
||||
let severityConfig = SeverityLevelsConfiguration<RuleMock>(warning: 17, error: 7)
|
||||
let severityConfig = SeverityLevelsConfiguration<MockRule>(warning: 17, error: 7)
|
||||
XCTAssertEqual(
|
||||
severityConfig.params,
|
||||
[RuleParameter(severity: .error, value: 7), RuleParameter(severity: .warning, value: 17)]
|
||||
@@ -99,32 +99,32 @@ final class RuleConfigurationTests: SwiftLintTestCase {
|
||||
}
|
||||
|
||||
func testSeverityLevelConfigPartialParams() {
|
||||
let severityConfig = SeverityLevelsConfiguration<RuleMock>(warning: 17, error: nil)
|
||||
let severityConfig = SeverityLevelsConfiguration<MockRule>(warning: 17, error: nil)
|
||||
XCTAssertEqual(severityConfig.params, [RuleParameter(severity: .warning, value: 17)])
|
||||
}
|
||||
|
||||
func testSeverityLevelConfigApplyNilErrorValue() throws {
|
||||
var severityConfig = SeverityLevelsConfiguration<RuleMock>(warning: 17, error: 20)
|
||||
var severityConfig = SeverityLevelsConfiguration<MockRule>(warning: 17, error: 20)
|
||||
try severityConfig.apply(configuration: ["error": nil, "warning": 18])
|
||||
XCTAssertEqual(severityConfig.params, [RuleParameter(severity: .warning, value: 18)])
|
||||
}
|
||||
|
||||
func testSeverityLevelConfigApplyMissingErrorValue() throws {
|
||||
var severityConfig = SeverityLevelsConfiguration<RuleMock>(warning: 17, error: 20)
|
||||
var severityConfig = SeverityLevelsConfiguration<MockRule>(warning: 17, error: 20)
|
||||
try severityConfig.apply(configuration: ["warning": 18])
|
||||
XCTAssertEqual(severityConfig.params, [RuleParameter(severity: .warning, value: 18)])
|
||||
}
|
||||
|
||||
func testRegexConfigurationThrows() {
|
||||
let config = 17
|
||||
var regexConfig = RegexConfiguration<RuleMock>(identifier: "")
|
||||
checkError(Issue.invalidConfiguration(ruleID: RuleMock.identifier)) {
|
||||
var regexConfig = RegexConfiguration<MockRule>(identifier: "")
|
||||
checkError(Issue.invalidConfiguration(ruleID: MockRule.identifier)) {
|
||||
try regexConfig.apply(configuration: config)
|
||||
}
|
||||
}
|
||||
|
||||
func testRegexRuleDescription() {
|
||||
var regexConfig = RegexConfiguration<RuleMock>(identifier: "regex")
|
||||
var regexConfig = RegexConfiguration<MockRule>(identifier: "regex")
|
||||
XCTAssertEqual(regexConfig.description, RuleDescription(identifier: "regex",
|
||||
name: "regex",
|
||||
description: "", kind: .style))
|
||||
|
||||
@@ -34,12 +34,14 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
assertMacroExpansion(
|
||||
"""
|
||||
@AutoConfigParser
|
||||
struct S {
|
||||
struct MyConfiguration {
|
||||
}
|
||||
""",
|
||||
expandedSource:
|
||||
"""
|
||||
struct S {
|
||||
struct MyConfiguration {
|
||||
|
||||
typealias Parent = MyRule
|
||||
|
||||
mutating func apply(configuration: Any) throws(Issue) {
|
||||
guard let configuration = configuration as? [String: Any] else {
|
||||
@@ -62,7 +64,7 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
assertMacroExpansion(
|
||||
"""
|
||||
@AutoConfigParser
|
||||
struct S {
|
||||
struct MyConfiguration {
|
||||
@ConfigurationElement
|
||||
var eA = 1
|
||||
@ConfigurationElement(key: "name")
|
||||
@@ -71,12 +73,14 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
""",
|
||||
expandedSource:
|
||||
"""
|
||||
struct S {
|
||||
struct MyConfiguration {
|
||||
@ConfigurationElement
|
||||
var eA = 1
|
||||
@ConfigurationElement(key: "name")
|
||||
var eB = 2
|
||||
|
||||
typealias Parent = MyRule
|
||||
|
||||
mutating func apply(configuration: Any) throws(Issue) {
|
||||
if $eA.key.isEmpty {
|
||||
$eA.key = "e_a"
|
||||
@@ -110,7 +114,7 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
assertMacroExpansion(
|
||||
"""
|
||||
@AutoConfigParser
|
||||
struct S {
|
||||
struct MyConfiguration {
|
||||
@ConfigurationElement(key: "eD")
|
||||
var eA = 1
|
||||
@ConfigurationElement(inline: true)
|
||||
@@ -121,7 +125,7 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
""",
|
||||
expandedSource:
|
||||
"""
|
||||
struct S {
|
||||
struct MyConfiguration {
|
||||
@ConfigurationElement(key: "eD")
|
||||
var eA = 1
|
||||
@ConfigurationElement(inline: true)
|
||||
@@ -129,6 +133,8 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
@ConfigurationElement(inline: false)
|
||||
var eC = 3
|
||||
|
||||
typealias Parent = MyRule
|
||||
|
||||
mutating func apply(configuration: Any) throws(Issue) {
|
||||
if $eA.key.isEmpty {
|
||||
$eA.key = "e_a"
|
||||
@@ -166,12 +172,14 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
assertMacroExpansion(
|
||||
"""
|
||||
@AutoConfigParser
|
||||
struct S: SeverityBasedRuleConfiguration {
|
||||
struct MyConfiguration: SeverityBasedRuleConfiguration {
|
||||
}
|
||||
""",
|
||||
expandedSource:
|
||||
"""
|
||||
struct S: SeverityBasedRuleConfiguration {
|
||||
struct MyConfiguration: SeverityBasedRuleConfiguration {
|
||||
|
||||
typealias Parent = MyRule
|
||||
|
||||
mutating func apply(configuration: Any) throws(Issue) {
|
||||
guard let configuration = configuration as? [String: Any] else {
|
||||
@@ -201,7 +209,7 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
assertMacroExpansion(
|
||||
"""
|
||||
@AutoConfigParser
|
||||
struct S: SeverityBasedRuleConfiguration {
|
||||
struct MyConfiguration: SeverityBasedRuleConfiguration {
|
||||
@ConfigurationElement
|
||||
var severityConfiguration = .warning
|
||||
@ConfigurationElement
|
||||
@@ -210,12 +218,14 @@ final class AutoConfigParserTests: XCTestCase {
|
||||
""",
|
||||
expandedSource:
|
||||
"""
|
||||
struct S: SeverityBasedRuleConfiguration {
|
||||
struct MyConfiguration: SeverityBasedRuleConfiguration {
|
||||
@ConfigurationElement
|
||||
var severityConfiguration = .warning
|
||||
@ConfigurationElement
|
||||
var foo = 2
|
||||
|
||||
typealias Parent = MyRule
|
||||
|
||||
mutating func apply(configuration: Any) throws(Issue) {
|
||||
if $severityConfiguration.key.isEmpty {
|
||||
$severityConfiguration.key = "severity_configuration"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import SwiftLintCore
|
||||
|
||||
public struct RuleMock: Rule {
|
||||
public struct MockRule: Rule {
|
||||
var configurationDescription: some Documentable { RuleConfigurationOption.noOptions }
|
||||
|
||||
public var configuration = SeverityConfiguration<Self>(.warning)
|
||||
|
||||
public static let description = RuleDescription(
|
||||
identifier: "RuleMock",
|
||||
identifier: "MockRule",
|
||||
name: "",
|
||||
description: "",
|
||||
kind: .style
|
||||
Reference in New Issue
Block a user