Specify default options in configurations only (#5020)

This commit is contained in:
Danny Mösch 2023-05-18 17:21:30 +02:00 committed by GitHub
parent 7fd22e0d6e
commit d938b2d3c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 160 additions and 319 deletions

View File

@ -2,10 +2,7 @@ import Foundation
import SourceKittenFramework import SourceKittenFramework
struct FileNameNoSpaceRule: ConfigurationProviderRule, OptInRule, SourceKitFreeRule { struct FileNameNoSpaceRule: ConfigurationProviderRule, OptInRule, SourceKitFreeRule {
var configuration = FileNameNoSpaceConfiguration( var configuration = FileNameNoSpaceConfiguration()
severity: .warning,
excluded: []
)
static let description = RuleDescription( static let description = RuleDescription(
identifier: "file_name_no_space", identifier: "file_name_no_space",

View File

@ -1,13 +1,7 @@
import SwiftSyntax import SwiftSyntax
struct FileNameRule: ConfigurationProviderRule, OptInRule, SourceKitFreeRule { struct FileNameRule: ConfigurationProviderRule, OptInRule, SourceKitFreeRule {
var configuration = FileNameConfiguration( var configuration = FileNameConfiguration()
severity: .warning,
excluded: ["main.swift", "LinuxMain.swift"],
prefixPattern: "",
suffixPattern: "\\+.*",
nestedTypeSeparator: "."
)
static let description = RuleDescription( static let description = RuleDescription(
identifier: "file_name", identifier: "file_name",

View File

@ -1,10 +1,7 @@
import SwiftSyntax import SwiftSyntax
struct ImplicitlyUnwrappedOptionalRule: SwiftSyntaxRule, ConfigurationProviderRule, OptInRule { struct ImplicitlyUnwrappedOptionalRule: SwiftSyntaxRule, ConfigurationProviderRule, OptInRule {
var configuration = ImplicitlyUnwrappedOptionalConfiguration( var configuration = ImplicitlyUnwrappedOptionalConfiguration()
mode: .allExceptIBOutlets,
severityConfiguration: SeverityConfiguration(.warning)
)
static let description = RuleDescription( static let description = RuleDescription(
identifier: "implicitly_unwrapped_optional", identifier: "implicitly_unwrapped_optional",

View File

@ -1,7 +1,7 @@
import SwiftSyntax import SwiftSyntax
struct PrivateOutletRule: SwiftSyntaxRule, OptInRule, ConfigurationProviderRule { struct PrivateOutletRule: SwiftSyntaxRule, OptInRule, ConfigurationProviderRule {
var configuration = PrivateOutletRuleConfiguration(allowPrivateSet: false) var configuration = PrivateOutletRuleConfiguration()
static let description = RuleDescription( static let description = RuleDescription(
identifier: "private_outlet", identifier: "private_outlet",

View File

@ -2,12 +2,7 @@ import Foundation
import SwiftSyntax import SwiftSyntax
struct PrivateUnitTestRule: SwiftSyntaxCorrectableRule, ConfigurationProviderRule, CacheDescriptionProvider { struct PrivateUnitTestRule: SwiftSyntaxCorrectableRule, ConfigurationProviderRule, CacheDescriptionProvider {
var configuration: PrivateUnitTestConfiguration = { var configuration = PrivateUnitTestConfiguration()
var configuration = PrivateUnitTestConfiguration(identifier: "private_unit_test")
configuration.message = "Unit test marked `private` will not be run by XCTest."
configuration.regex = regex("XCTestCase")
return configuration
}()
var cacheDescription: String { var cacheDescription: String {
return configuration.cacheDescription return configuration.cacheDescription

View File

@ -16,11 +16,7 @@ struct UnusedDeclarationRule: ConfigurationProviderRule, AnalyzerRule, Collectin
typealias FileInfo = FileUSRs typealias FileInfo = FileUSRs
var configuration = UnusedDeclarationConfiguration( var configuration = UnusedDeclarationConfiguration()
severity: .error,
includePublicAndOpen: false,
relatedUSRsToSkip: ["s:7SwiftUI15PreviewProviderP"]
)
static let description = RuleDescription( static let description = RuleDescription(
identifier: "unused_declaration", identifier: "unused_declaration",

View File

@ -4,8 +4,7 @@ import SourceKittenFramework
private let moduleToLog = ProcessInfo.processInfo.environment["SWIFTLINT_LOG_MODULE_USAGE"] private let moduleToLog = ProcessInfo.processInfo.environment["SWIFTLINT_LOG_MODULE_USAGE"]
struct UnusedImportRule: CorrectableRule, ConfigurationProviderRule, AnalyzerRule { struct UnusedImportRule: CorrectableRule, ConfigurationProviderRule, AnalyzerRule {
var configuration = UnusedImportConfiguration(severity: .warning, requireExplicitImports: false, var configuration = UnusedImportConfiguration()
allowedTransitiveImports: [], alwaysKeepImports: [])
static let description = RuleDescription( static let description = RuleDescription(
identifier: "unused_import", identifier: "unused_import",

View File

@ -2,7 +2,7 @@ import Foundation
import SourceKittenFramework import SourceKittenFramework
struct CyclomaticComplexityRule: ASTRule, ConfigurationProviderRule { struct CyclomaticComplexityRule: ASTRule, ConfigurationProviderRule {
var configuration = CyclomaticComplexityConfiguration(warning: 10, error: 20) var configuration = CyclomaticComplexityConfiguration()
static let description = RuleDescription( static let description = RuleDescription(
identifier: "cyclomatic_complexity", identifier: "cyclomatic_complexity",

View File

@ -1,7 +1,7 @@
import SourceKittenFramework import SourceKittenFramework
struct FileLengthRule: ConfigurationProviderRule { struct FileLengthRule: ConfigurationProviderRule {
var configuration = FileLengthRuleConfiguration(warning: 400, error: 1000) var configuration = FileLengthRuleConfiguration()
static let description = RuleDescription( static let description = RuleDescription(
identifier: "file_length", identifier: "file_length",

View File

@ -1,7 +1,7 @@
import SwiftSyntax import SwiftSyntax
struct FunctionParameterCountRule: SwiftSyntaxRule, ConfigurationProviderRule { struct FunctionParameterCountRule: SwiftSyntaxRule, ConfigurationProviderRule {
var configuration = FunctionParameterCountConfiguration(warning: 5, error: 8) var configuration = FunctionParameterCountConfiguration()
static let description = RuleDescription( static let description = RuleDescription(
identifier: "function_parameter_count", identifier: "function_parameter_count",

View File

@ -2,7 +2,7 @@ import Foundation
import SourceKittenFramework import SourceKittenFramework
struct LineLengthRule: ConfigurationProviderRule { struct LineLengthRule: ConfigurationProviderRule {
var configuration = LineLengthConfiguration(warning: 120, error: 200) var configuration = LineLengthConfiguration()
private let commentKinds = SyntaxKind.commentKinds private let commentKinds = SyntaxKind.commentKinds
private let nonCommentKinds = SyntaxKind.allKinds.subtracting(SyntaxKind.commentKinds) private let nonCommentKinds = SyntaxKind.allKinds.subtracting(SyntaxKind.commentKinds)

View File

@ -1,10 +1,7 @@
import SourceKittenFramework import SourceKittenFramework
struct NestingRule: ConfigurationProviderRule { struct NestingRule: ConfigurationProviderRule {
var configuration = NestingConfiguration(typeLevelWarning: 1, var configuration = NestingConfiguration()
typeLevelError: nil,
functionLevelWarning: 2,
functionLevelError: nil)
static let description = RuleDescription( static let description = RuleDescription(
identifier: "nesting", identifier: "nesting",

View File

@ -12,7 +12,7 @@ struct CyclomaticComplexityConfiguration: RuleConfiguration, Equatable {
", \(ConfigurationKey.ignoresCaseStatements.rawValue): \(ignoresCaseStatements)" ", \(ConfigurationKey.ignoresCaseStatements.rawValue): \(ignoresCaseStatements)"
} }
static let defaultComplexityStatements: Set<StatementKind> = [ private static let defaultComplexityStatements: Set<StatementKind> = [
.forEach, .forEach,
.if, .if,
.guard, .guard,
@ -22,11 +22,10 @@ struct CyclomaticComplexityConfiguration: RuleConfiguration, Equatable {
.case .case
] ]
private(set) var length: SeverityLevelsConfiguration private(set) var length = SeverityLevelsConfiguration(warning: 10, error: 20)
private(set) var complexityStatements = Self.defaultComplexityStatements
private(set) var complexityStatements: Set<StatementKind> private(set) var ignoresCaseStatements = false {
private(set) var ignoresCaseStatements: Bool {
didSet { didSet {
if ignoresCaseStatements { if ignoresCaseStatements {
complexityStatements.remove(.case) complexityStatements.remove(.case)
@ -40,12 +39,6 @@ struct CyclomaticComplexityConfiguration: RuleConfiguration, Equatable {
return length.params return length.params
} }
init(warning: Int, error: Int?, ignoresCaseStatements: Bool = false) {
self.length = SeverityLevelsConfiguration(warning: warning, error: error)
self.complexityStatements = Self.defaultComplexityStatements
self.ignoresCaseStatements = ignoresCaseStatements
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
if let configurationArray = [Int].array(of: configuration), if let configurationArray = [Int].array(of: configuration),
configurationArray.isNotEmpty { configurationArray.isNotEmpty {

View File

@ -5,19 +5,14 @@ private enum ConfigurationKey: String {
} }
struct FileLengthRuleConfiguration: RuleConfiguration, Equatable { struct FileLengthRuleConfiguration: RuleConfiguration, Equatable {
private(set) var ignoreCommentOnlyLines: Bool private(set) var severityConfiguration = SeverityLevelsConfiguration(warning: 400, error: 1000)
private(set) var severityConfiguration: SeverityLevelsConfiguration private(set) var ignoreCommentOnlyLines = false
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + return "severity: \(severityConfiguration.consoleDescription)" +
", \(ConfigurationKey.ignoreCommentOnlyLines.rawValue): \(ignoreCommentOnlyLines)" ", \(ConfigurationKey.ignoreCommentOnlyLines.rawValue): \(ignoreCommentOnlyLines)"
} }
init(warning: Int, error: Int?, ignoreCommentOnlyLines: Bool = false) {
self.ignoreCommentOnlyLines = ignoreCommentOnlyLines
self.severityConfiguration = SeverityLevelsConfiguration(warning: warning, error: error)
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
if let configurationArray = [Int].array(of: configuration), if let configurationArray = [Int].array(of: configuration),
configurationArray.isNotEmpty { configurationArray.isNotEmpty {

View File

@ -7,20 +7,11 @@ struct FileNameConfiguration: SeverityBasedRuleConfiguration, Equatable {
"nested_type_separator: \(nestedTypeSeparator)" "nested_type_separator: \(nestedTypeSeparator)"
} }
private(set) var severityConfiguration: SeverityConfiguration private(set) var severityConfiguration = SeverityConfiguration.warning
private(set) var excluded: Set<String> private(set) var excluded = Set<String>(["main.swift", "LinuxMain.swift"])
private(set) var prefixPattern: String private(set) var prefixPattern = ""
private(set) var suffixPattern: String private(set) var suffixPattern = "\\+.*"
private(set) var nestedTypeSeparator: String private(set) var nestedTypeSeparator = "."
init(severity: ViolationSeverity, excluded: [String] = [],
prefixPattern: String = "", suffixPattern: String = "\\+.*", nestedTypeSeparator: String = ".") {
self.severityConfiguration = SeverityConfiguration(severity)
self.excluded = Set(excluded)
self.prefixPattern = prefixPattern
self.suffixPattern = suffixPattern
self.nestedTypeSeparator = nestedTypeSeparator
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configurationDict = configuration as? [String: Any] else { guard let configurationDict = configuration as? [String: Any] else {

View File

@ -4,13 +4,8 @@ struct FileNameNoSpaceConfiguration: SeverityBasedRuleConfiguration, Equatable {
"excluded: \(excluded.sorted())" "excluded: \(excluded.sorted())"
} }
private(set) var severityConfiguration: SeverityConfiguration private(set) var severityConfiguration: SeverityConfiguration = .warning
private(set) var excluded: Set<String> private(set) var excluded = Set<String>()
init(severity: ViolationSeverity, excluded: [String] = []) {
self.severityConfiguration = SeverityConfiguration(severity)
self.excluded = Set(excluded)
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configurationDict = configuration as? [String: Any] else { guard let configurationDict = configuration as? [String: Any] else {

View File

@ -5,19 +5,14 @@ private enum ConfigurationKey: String {
} }
struct FunctionParameterCountConfiguration: RuleConfiguration, Equatable { struct FunctionParameterCountConfiguration: RuleConfiguration, Equatable {
private(set) var ignoresDefaultParameters: Bool private(set) var ignoresDefaultParameters = true
private(set) var severityConfiguration: SeverityLevelsConfiguration private(set) var severityConfiguration = SeverityLevelsConfiguration(warning: 5, error: 8)
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + return "severity: \(severityConfiguration.consoleDescription)" +
", \(ConfigurationKey.ignoresDefaultParameters.rawValue): \(ignoresDefaultParameters)" ", \(ConfigurationKey.ignoresDefaultParameters.rawValue): \(ignoresDefaultParameters)"
} }
init(warning: Int, error: Int?, ignoresDefaultParameters: Bool = true) {
self.ignoresDefaultParameters = ignoresDefaultParameters
self.severityConfiguration = SeverityLevelsConfiguration(warning: warning, error: error)
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
if let configurationArray = [Int].array(of: configuration), if let configurationArray = [Int].array(of: configuration),
configurationArray.isNotEmpty { configurationArray.isNotEmpty {

View File

@ -14,13 +14,8 @@ enum ImplicitlyUnwrappedOptionalModeConfiguration: String {
} }
struct ImplicitlyUnwrappedOptionalConfiguration: SeverityBasedRuleConfiguration, Equatable { struct ImplicitlyUnwrappedOptionalConfiguration: SeverityBasedRuleConfiguration, Equatable {
private(set) var severityConfiguration: SeverityConfiguration private(set) var mode = ImplicitlyUnwrappedOptionalModeConfiguration.allExceptIBOutlets
private(set) var mode: ImplicitlyUnwrappedOptionalModeConfiguration private(set) var severityConfiguration = SeverityConfiguration.warning
init(mode: ImplicitlyUnwrappedOptionalModeConfiguration, severityConfiguration: SeverityConfiguration) {
self.mode = mode
self.severityConfiguration = severityConfiguration
}
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + return "severity: \(severityConfiguration.consoleDescription)" +

View File

@ -7,25 +7,11 @@ struct IndentationWidthConfiguration: SeverityBasedRuleConfiguration, Equatable
+ "include_multiline_strings: \(includeMultilineStrings)" + "include_multiline_strings: \(includeMultilineStrings)"
} }
private(set) var severityConfiguration: SeverityConfiguration private(set) var severityConfiguration = SeverityConfiguration.warning
private(set) var indentationWidth: Int private(set) var indentationWidth = 4
private(set) var includeComments: Bool private(set) var includeComments = true
private(set) var includeCompilerDirectives: Bool private(set) var includeCompilerDirectives = true
private(set) var includeMultilineStrings: Bool private(set) var includeMultilineStrings = true
init(
severity: ViolationSeverity,
indentationWidth: Int,
includeComments: Bool,
includeCompilerDirectives: Bool,
includeMultilineStrings: Bool
) {
self.severityConfiguration = SeverityConfiguration(severity)
self.indentationWidth = indentationWidth
self.includeComments = includeComments
self.includeCompilerDirectives = includeCompilerDirectives
self.includeMultilineStrings = includeMultilineStrings
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configurationDict = configuration as? [String: Any] else { guard let configurationDict = configuration as? [String: Any] else {

View File

@ -1,16 +1,3 @@
struct LineLengthRuleOptions: OptionSet {
let rawValue: Int
init(rawValue: Int = 0) {
self.rawValue = rawValue
}
static let ignoreURLs = Self(rawValue: 1 << 0)
static let ignoreFunctionDeclarations = Self(rawValue: 1 << 1)
static let ignoreComments = Self(rawValue: 1 << 2)
static let ignoreInterpolatedStrings = Self(rawValue: 1 << 3)
}
private enum ConfigurationKey: String { private enum ConfigurationKey: String {
case warning = "warning" case warning = "warning"
case error = "error" case error = "error"
@ -29,24 +16,16 @@ struct LineLengthConfiguration: RuleConfiguration, Equatable {
", ignores_interpolated_strings: \(ignoresInterpolatedStrings)" ", ignores_interpolated_strings: \(ignoresInterpolatedStrings)"
} }
var length: SeverityLevelsConfiguration private(set) var length = SeverityLevelsConfiguration(warning: 120, error: 200)
var ignoresURLs: Bool private(set) var ignoresURLs = false
var ignoresFunctionDeclarations: Bool private(set) var ignoresFunctionDeclarations = false
var ignoresComments: Bool private(set) var ignoresComments = false
var ignoresInterpolatedStrings: Bool private(set) var ignoresInterpolatedStrings = false
var params: [RuleParameter<Int>] { var params: [RuleParameter<Int>] {
return length.params return length.params
} }
init(warning: Int, error: Int?, options: LineLengthRuleOptions = []) {
self.length = SeverityLevelsConfiguration(warning: warning, error: error)
self.ignoresURLs = options.contains(.ignoreURLs)
self.ignoresFunctionDeclarations = options.contains(.ignoreFunctionDeclarations)
self.ignoresComments = options.contains(.ignoreComments)
self.ignoresInterpolatedStrings = options.contains(.ignoreInterpolatedStrings)
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
if applyArray(configuration: configuration) { if applyArray(configuration: configuration) {
return return

View File

@ -12,11 +12,11 @@ struct NameConfiguration: RuleConfiguration, Equatable {
return output return output
} }
var minLength: SeverityLevelsConfiguration private(set) var minLength: SeverityLevelsConfiguration
var maxLength: SeverityLevelsConfiguration private(set) var maxLength: SeverityLevelsConfiguration
var excludedRegularExpressions: Set<NSRegularExpression> private(set) var excludedRegularExpressions: Set<NSRegularExpression>
private(set) var validatesStartWithLowercase: SeverityConfiguration?
private var allowedSymbolsSet: Set<String> private var allowedSymbolsSet: Set<String>
var validatesStartWithLowercase: SeverityConfiguration?
var minLengthThreshold: Int { var minLengthThreshold: Int {
return max(minLength.warning, minLength.error ?? minLength.warning) return max(minLength.warning, minLength.error ?? minLength.warning)

View File

@ -6,22 +6,10 @@ struct NestingConfiguration: RuleConfiguration, Equatable {
+ ", (always_allow_one_type_in_functions) \(alwaysAllowOneTypeInFunctions)" + ", (always_allow_one_type_in_functions) \(alwaysAllowOneTypeInFunctions)"
} }
var typeLevel: SeverityLevelsConfiguration private(set) var typeLevel = SeverityLevelsConfiguration(warning: 1)
var functionLevel: SeverityLevelsConfiguration private(set) var functionLevel = SeverityLevelsConfiguration(warning: 2)
var checkNestingInClosuresAndStatements: Bool private(set) var checkNestingInClosuresAndStatements = true
var alwaysAllowOneTypeInFunctions: Bool private(set) var alwaysAllowOneTypeInFunctions = false
init(typeLevelWarning: Int,
typeLevelError: Int?,
functionLevelWarning: Int,
functionLevelError: Int?,
checkNestingInClosuresAndStatements: Bool = true,
alwaysAllowOneTypeInFunctions: Bool = false) {
self.typeLevel = SeverityLevelsConfiguration(warning: typeLevelWarning, error: typeLevelError)
self.functionLevel = SeverityLevelsConfiguration(warning: functionLevelWarning, error: functionLevelError)
self.checkNestingInClosuresAndStatements = checkNestingInClosuresAndStatements
self.alwaysAllowOneTypeInFunctions = alwaysAllowOneTypeInFunctions
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configurationDict = configuration as? [String: Any] else { guard let configurationDict = configuration as? [String: Any] else {

View File

@ -1,15 +1,11 @@
struct PrefixedConstantRuleConfiguration: SeverityBasedRuleConfiguration, Equatable { struct PrefixedConstantRuleConfiguration: SeverityBasedRuleConfiguration, Equatable {
var severityConfiguration = SeverityConfiguration(.warning) private(set) var severityConfiguration = SeverityConfiguration(.warning)
var onlyPrivateMembers = false private(set) var onlyPrivateMembers = false
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + ", only_private: \(onlyPrivateMembers)" return "severity: \(severityConfiguration.consoleDescription)" + ", only_private: \(onlyPrivateMembers)"
} }
init(onlyPrivateMembers: Bool) {
self.onlyPrivateMembers = onlyPrivateMembers
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configuration = configuration as? [String: Any] else { guard let configuration = configuration as? [String: Any] else {
throw Issue.unknownConfiguration throw Issue.unknownConfiguration

View File

@ -1,15 +1,11 @@
struct PrivateOutletRuleConfiguration: SeverityBasedRuleConfiguration, Equatable { struct PrivateOutletRuleConfiguration: SeverityBasedRuleConfiguration, Equatable {
private(set) var severityConfiguration = SeverityConfiguration(.warning) private(set) var severityConfiguration = SeverityConfiguration(.warning)
var allowPrivateSet = false private(set) var allowPrivateSet = false
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + ", allow_private_set: \(allowPrivateSet)" return "severity: \(severityConfiguration.consoleDescription)" + ", allow_private_set: \(allowPrivateSet)"
} }
init(allowPrivateSet: Bool) {
self.allowPrivateSet = allowPrivateSet
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configuration = configuration as? [String: Any] else { guard let configuration = configuration as? [String: Any] else {
throw Issue.unknownConfiguration throw Issue.unknownConfiguration

View File

@ -1,12 +1,12 @@
import Foundation import Foundation
import SwiftLintCore
struct PrivateUnitTestConfiguration: SeverityBasedRuleConfiguration, Equatable, CacheDescriptionProvider { struct PrivateUnitTestConfiguration: SeverityBasedRuleConfiguration, Equatable, CacheDescriptionProvider {
let identifier: String private(set) var name: String?
var name: String? private(set) var message = "Unit test marked `private` will not be run by XCTest."
var message = "Regex matched." private(set) var regex = SwiftLintCore.regex("XCTestCase")
var regex: NSRegularExpression! private(set) var included: NSRegularExpression?
var included: NSRegularExpression? private(set) var severityConfiguration = SeverityConfiguration(.warning)
var severityConfiguration = SeverityConfiguration(.warning)
var consoleDescription: String { var consoleDescription: String {
return "\(severity.rawValue): \(regex.pattern)" return "\(severity.rawValue): \(regex.pattern)"
@ -14,7 +14,7 @@ struct PrivateUnitTestConfiguration: SeverityBasedRuleConfiguration, Equatable,
var cacheDescription: String { var cacheDescription: String {
let jsonObject: [String] = [ let jsonObject: [String] = [
identifier, "private_unit_test",
name ?? "", name ?? "",
message, message,
regex.pattern, regex.pattern,
@ -28,10 +28,6 @@ struct PrivateUnitTestConfiguration: SeverityBasedRuleConfiguration, Equatable,
queuedFatalError("Could not serialize private unit test configuration for cache") queuedFatalError("Could not serialize private unit test configuration for cache")
} }
init(identifier: String) {
self.identifier = identifier
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configurationDict = configuration as? [String: Any] else { guard let configurationDict = configuration as? [String: Any] else {
throw Issue.unknownConfiguration throw Issue.unknownConfiguration

View File

@ -18,8 +18,8 @@ struct StatementConfiguration: SeverityBasedRuleConfiguration, Equatable {
"(severity) \(severityConfiguration.consoleDescription)" "(severity) \(severityConfiguration.consoleDescription)"
} }
var statementMode: StatementModeConfiguration private(set) var statementMode = StatementModeConfiguration.default
var severityConfiguration: SeverityConfiguration private(set) var severityConfiguration = SeverityConfiguration.warning
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configurationDict = configuration as? [String: Any] else { guard let configurationDict = configuration as? [String: Any] else {

View File

@ -1,7 +1,7 @@
struct TrailingWhitespaceConfiguration: SeverityBasedRuleConfiguration, Equatable { struct TrailingWhitespaceConfiguration: SeverityBasedRuleConfiguration, Equatable {
var severityConfiguration = SeverityConfiguration(.warning) private(set) var severityConfiguration = SeverityConfiguration(.warning)
var ignoresEmptyLines = false private(set) var ignoresEmptyLines = false
var ignoresComments = true private(set) var ignoresComments = true
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + return "severity: \(severityConfiguration.consoleDescription)" +
@ -9,11 +9,6 @@ struct TrailingWhitespaceConfiguration: SeverityBasedRuleConfiguration, Equatabl
", ignores_comments: \(ignoresComments)" ", ignores_comments: \(ignoresComments)"
} }
init(ignoresEmptyLines: Bool, ignoresComments: Bool) {
self.ignoresEmptyLines = ignoresEmptyLines
self.ignoresComments = ignoresComments
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configuration = configuration as? [String: Any] else { guard let configuration = configuration as? [String: Any] else {
throw Issue.unknownConfiguration throw Issue.unknownConfiguration

View File

@ -5,9 +5,9 @@ private enum ConfigurationKey: String {
} }
struct UnusedDeclarationConfiguration: SeverityBasedRuleConfiguration, Equatable { struct UnusedDeclarationConfiguration: SeverityBasedRuleConfiguration, Equatable {
private(set) var includePublicAndOpen: Bool private(set) var severityConfiguration = SeverityConfiguration.error
private(set) var severityConfiguration: SeverityConfiguration private(set) var includePublicAndOpen = false
private(set) var relatedUSRsToSkip: Set<String> private(set) var relatedUSRsToSkip = Set(["s:7SwiftUI15PreviewProviderP"])
var consoleDescription: String { var consoleDescription: String {
return "\(ConfigurationKey.severity.rawValue): \(severityConfiguration.severity.rawValue), " + return "\(ConfigurationKey.severity.rawValue): \(severityConfiguration.severity.rawValue), " +
@ -15,12 +15,6 @@ struct UnusedDeclarationConfiguration: SeverityBasedRuleConfiguration, Equatable
"\(ConfigurationKey.relatedUSRsToSkip.rawValue): \(relatedUSRsToSkip.sorted())" "\(ConfigurationKey.relatedUSRsToSkip.rawValue): \(relatedUSRsToSkip.sorted())"
} }
init(severity: ViolationSeverity, includePublicAndOpen: Bool, relatedUSRsToSkip: Set<String>) {
self.includePublicAndOpen = includePublicAndOpen
self.severityConfiguration = SeverityConfiguration(severity)
self.relatedUSRsToSkip = relatedUSRsToSkip
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configDict = configuration as? [String: Any], configDict.isNotEmpty else { guard let configDict = configuration as? [String: Any], configDict.isNotEmpty else {
throw Issue.unknownConfiguration throw Issue.unknownConfiguration

View File

@ -29,20 +29,11 @@ struct UnusedImportConfiguration: SeverityBasedRuleConfiguration, Equatable {
].joined(separator: ", ") ].joined(separator: ", ")
} }
private(set) var severityConfiguration: SeverityConfiguration private(set) var severityConfiguration = SeverityConfiguration.warning
private(set) var requireExplicitImports: Bool private(set) var requireExplicitImports = false
private(set) var allowedTransitiveImports: [TransitiveModuleConfiguration] private(set) var allowedTransitiveImports = [TransitiveModuleConfiguration]()
/// A set of modules to never remove the imports of. /// A set of modules to never remove the imports of.
private(set) var alwaysKeepImports: [String] private(set) var alwaysKeepImports = [String]()
init(severity: ViolationSeverity, requireExplicitImports: Bool,
allowedTransitiveImports: [TransitiveModuleConfiguration],
alwaysKeepImports: [String]) {
self.severityConfiguration = SeverityConfiguration(severity)
self.requireExplicitImports = requireExplicitImports
self.allowedTransitiveImports = allowedTransitiveImports
self.alwaysKeepImports = alwaysKeepImports
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configurationDict = configuration as? [String: Any] else { guard let configurationDict = configuration as? [String: Any] else {

View File

@ -1,15 +1,11 @@
struct UnusedOptionalBindingConfiguration: SeverityBasedRuleConfiguration, Equatable { struct UnusedOptionalBindingConfiguration: SeverityBasedRuleConfiguration, Equatable {
private(set) var severityConfiguration = SeverityConfiguration(.warning) private(set) var severityConfiguration = SeverityConfiguration(.warning)
private(set) var ignoreOptionalTry: Bool private(set) var ignoreOptionalTry = false
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + ", ignore_optional_try: \(ignoreOptionalTry)" return "severity: \(severityConfiguration.consoleDescription)" + ", ignore_optional_try: \(ignoreOptionalTry)"
} }
init(ignoreOptionalTry: Bool) {
self.ignoreOptionalTry = ignoreOptionalTry
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configuration = configuration as? [String: Any] else { guard let configuration = configuration as? [String: Any] else {
throw Issue.unknownConfiguration throw Issue.unknownConfiguration

View File

@ -1,15 +1,11 @@
struct VerticalWhitespaceConfiguration: SeverityBasedRuleConfiguration, Equatable { struct VerticalWhitespaceConfiguration: SeverityBasedRuleConfiguration, Equatable {
private(set) var severityConfiguration = SeverityConfiguration(.warning) private(set) var severityConfiguration = SeverityConfiguration(.warning)
private(set) var maxEmptyLines: Int private(set) var maxEmptyLines = 1
var consoleDescription: String { var consoleDescription: String {
return "severity: \(severityConfiguration.consoleDescription)" + ", max_empty_lines: \(maxEmptyLines)" return "severity: \(severityConfiguration.consoleDescription)" + ", max_empty_lines: \(maxEmptyLines)"
} }
init(maxEmptyLines: Int) {
self.maxEmptyLines = maxEmptyLines
}
mutating func apply(configuration: Any) throws { mutating func apply(configuration: Any) throws {
guard let configuration = configuration as? [String: Any] else { guard let configuration = configuration as? [String: Any] else {
throw Issue.unknownConfiguration throw Issue.unknownConfiguration

View File

@ -16,13 +16,8 @@ struct IndentationWidthRule: ConfigurationProviderRule, OptInRule {
} }
// MARK: - Properties // MARK: - Properties
var configuration = IndentationWidthConfiguration( var configuration = IndentationWidthConfiguration()
severity: .warning,
indentationWidth: 4,
includeComments: true,
includeCompilerDirectives: true,
includeMultilineStrings: true
)
static let description = RuleDescription( static let description = RuleDescription(
identifier: "indentation_width", identifier: "indentation_width",
name: "Indentation Width", name: "Indentation Width",

View File

@ -1,7 +1,7 @@
import SwiftSyntax import SwiftSyntax
struct PrefixedTopLevelConstantRule: SwiftSyntaxRule, OptInRule, ConfigurationProviderRule { struct PrefixedTopLevelConstantRule: SwiftSyntaxRule, OptInRule, ConfigurationProviderRule {
var configuration = PrefixedConstantRuleConfiguration(onlyPrivateMembers: false) var configuration = PrefixedConstantRuleConfiguration()
static let description = RuleDescription( static let description = RuleDescription(
identifier: "prefixed_toplevel_constant", identifier: "prefixed_toplevel_constant",

View File

@ -2,8 +2,7 @@ import Foundation
import SourceKittenFramework import SourceKittenFramework
struct StatementPositionRule: CorrectableRule, ConfigurationProviderRule { struct StatementPositionRule: CorrectableRule, ConfigurationProviderRule {
var configuration = StatementConfiguration(statementMode: .default, var configuration = StatementConfiguration()
severityConfiguration: SeverityConfiguration(.warning))
static let description = RuleDescription( static let description = RuleDescription(
identifier: "statement_position", identifier: "statement_position",

View File

@ -2,8 +2,7 @@ import Foundation
import SourceKittenFramework import SourceKittenFramework
struct TrailingWhitespaceRule: CorrectableRule, ConfigurationProviderRule { struct TrailingWhitespaceRule: CorrectableRule, ConfigurationProviderRule {
var configuration = TrailingWhitespaceConfiguration(ignoresEmptyLines: false, var configuration = TrailingWhitespaceConfiguration()
ignoresComments: true)
static let description = RuleDescription( static let description = RuleDescription(
identifier: "trailing_whitespace", identifier: "trailing_whitespace",

View File

@ -1,7 +1,7 @@
import SwiftSyntax import SwiftSyntax
struct UnusedOptionalBindingRule: SwiftSyntaxRule, ConfigurationProviderRule { struct UnusedOptionalBindingRule: SwiftSyntaxRule, ConfigurationProviderRule {
var configuration = UnusedOptionalBindingConfiguration(ignoreOptionalTry: false) var configuration = UnusedOptionalBindingConfiguration()
static let description = RuleDescription( static let description = RuleDescription(
identifier: "unused_optional_binding", identifier: "unused_optional_binding",

View File

@ -4,7 +4,7 @@ import SourceKittenFramework
private let defaultDescriptionReason = "Limit vertical whitespace to a single empty line" private let defaultDescriptionReason = "Limit vertical whitespace to a single empty line"
struct VerticalWhitespaceRule: CorrectableRule, ConfigurationProviderRule { struct VerticalWhitespaceRule: CorrectableRule, ConfigurationProviderRule {
var configuration = VerticalWhitespaceConfiguration(maxEmptyLines: 1) var configuration = VerticalWhitespaceConfiguration()
static let description = RuleDescription( static let description = RuleDescription(
identifier: "vertical_whitespace", identifier: "vertical_whitespace",

View File

@ -6,25 +6,31 @@ class CyclomaticComplexityConfigurationTests: SwiftLintTestCase {
let warning = 10 let warning = 10
let error = 30 let error = 30
let level = SeverityLevelsConfiguration(warning: warning, error: error) let level = SeverityLevelsConfiguration(warning: warning, error: error)
let configuration1 = CyclomaticComplexityConfiguration(warning: warning, error: error) let configuration1 = CyclomaticComplexityConfiguration(length: level)
XCTAssertEqual(configuration1.length, level) XCTAssertEqual(configuration1.length, level)
let length2 = SeverityLevelsConfiguration(warning: warning, error: nil) let length2 = SeverityLevelsConfiguration(warning: warning, error: nil)
let configuration2 = CyclomaticComplexityConfiguration(warning: warning, error: nil) let configuration2 = CyclomaticComplexityConfiguration(length: length2)
XCTAssertEqual(configuration2.length, length2) XCTAssertEqual(configuration2.length, length2)
} }
func testCyclomaticComplexityConfigurationInitializerSetsIgnoresCaseStatements() { func testCyclomaticComplexityConfigurationInitializerSetsIgnoresCaseStatements() {
let configuration1 = CyclomaticComplexityConfiguration(warning: 10, error: 30, let configuration1 = CyclomaticComplexityConfiguration(
ignoresCaseStatements: true) length: SeverityLevelsConfiguration(warning: 10, error: 30),
ignoresCaseStatements: true
)
XCTAssertTrue(configuration1.ignoresCaseStatements) XCTAssertTrue(configuration1.ignoresCaseStatements)
let configuration2 = CyclomaticComplexityConfiguration(warning: 0, error: 30) let configuration2 = CyclomaticComplexityConfiguration(
length: SeverityLevelsConfiguration(warning: 10, error: 30)
)
XCTAssertFalse(configuration2.ignoresCaseStatements) XCTAssertFalse(configuration2.ignoresCaseStatements)
} }
func testCyclomaticComplexityConfigurationApplyConfigurationWithDictionary() throws { func testCyclomaticComplexityConfigurationApplyConfigurationWithDictionary() throws {
var configuration = CyclomaticComplexityConfiguration(warning: 0, error: 0) var configuration = CyclomaticComplexityConfiguration(
length: SeverityLevelsConfiguration(warning: 0, error: 0)
)
let warning1 = 10 let warning1 = 10
let error1 = 30 let error1 = 30
@ -60,7 +66,9 @@ class CyclomaticComplexityConfigurationTests: SwiftLintTestCase {
] ]
for badConfig in badConfigs { for badConfig in badConfigs {
var configuration = CyclomaticComplexityConfiguration(warning: 100, error: 150) var configuration = CyclomaticComplexityConfiguration(
length: SeverityLevelsConfiguration(warning: 100, error: 150)
)
checkError(Issue.unknownConfiguration) { checkError(Issue.unknownConfiguration) {
try configuration.apply(configuration: badConfig) try configuration.apply(configuration: badConfig)
} }
@ -68,11 +76,23 @@ class CyclomaticComplexityConfigurationTests: SwiftLintTestCase {
} }
func testCyclomaticComplexityConfigurationCompares() { func testCyclomaticComplexityConfigurationCompares() {
let config1 = CyclomaticComplexityConfiguration(warning: 10, error: 30) let config1 = CyclomaticComplexityConfiguration(
let config2 = CyclomaticComplexityConfiguration(warning: 10, error: 30, ignoresCaseStatements: true) length: SeverityLevelsConfiguration(warning: 10, error: 30)
let config3 = CyclomaticComplexityConfiguration(warning: 10, error: 30, ignoresCaseStatements: false) )
let config4 = CyclomaticComplexityConfiguration(warning: 10, error: 40) let config2 = CyclomaticComplexityConfiguration(
let config5 = CyclomaticComplexityConfiguration(warning: 20, error: 30) length: SeverityLevelsConfiguration(warning: 10, error: 30),
ignoresCaseStatements: true
)
let config3 = CyclomaticComplexityConfiguration(
length: SeverityLevelsConfiguration(warning: 10, error: 30),
ignoresCaseStatements: false
)
let config4 = CyclomaticComplexityConfiguration(
length: SeverityLevelsConfiguration(warning: 10, error: 40)
)
let config5 = CyclomaticComplexityConfiguration(
length: SeverityLevelsConfiguration(warning: 20, error: 30)
)
XCTAssertNotEqual(config1, config2) XCTAssertNotEqual(config1, config2)
XCTAssertEqual(config1, config3) XCTAssertEqual(config1, config3)
XCTAssertNotEqual(config1, config4) XCTAssertNotEqual(config1, config4)

View File

@ -2,87 +2,66 @@
import XCTest import XCTest
class LineLengthConfigurationTests: SwiftLintTestCase { class LineLengthConfigurationTests: SwiftLintTestCase {
func testLineLengthConfigurationInitializerSetsLength() { private let severityLevels = SeverityLevelsConfiguration(warning: 100, error: 150)
let warning = 100
let error = 150
let length1 = SeverityLevelsConfiguration(warning: warning, error: error)
let configuration1 = LineLengthConfiguration(warning: warning,
error: error)
XCTAssertEqual(configuration1.length, length1)
let length2 = SeverityLevelsConfiguration(warning: warning, error: nil) func testLineLengthConfigurationInitializerSetsLength() {
let configuration2 = LineLengthConfiguration(warning: warning, let configuration1 = LineLengthConfiguration(length: severityLevels)
error: nil) XCTAssertEqual(configuration1.length, severityLevels)
let length2 = SeverityLevelsConfiguration(warning: 100, error: nil)
let configuration2 = LineLengthConfiguration(length: length2)
XCTAssertEqual(configuration2.length, length2) XCTAssertEqual(configuration2.length, length2)
} }
func testLineLengthConfigurationInitialiserSetsIgnoresURLs() { func testLineLengthConfigurationInitialiserSetsIgnoresURLs() {
let configuration1 = LineLengthConfiguration(warning: 100, let configuration1 = LineLengthConfiguration(length: severityLevels, ignoresURLs: true)
error: 150,
options: [.ignoreURLs])
XCTAssertTrue(configuration1.ignoresURLs) XCTAssertTrue(configuration1.ignoresURLs)
let configuration2 = LineLengthConfiguration(warning: 100, let configuration2 = LineLengthConfiguration(length: severityLevels)
error: 150)
XCTAssertFalse(configuration2.ignoresURLs) XCTAssertFalse(configuration2.ignoresURLs)
} }
func testLineLengthConfigurationInitialiserSetsIgnoresFunctionDeclarations() { func testLineLengthConfigurationInitialiserSetsIgnoresFunctionDeclarations() {
let configuration1 = LineLengthConfiguration(warning: 100, let configuration1 = LineLengthConfiguration(length: severityLevels, ignoresFunctionDeclarations: true)
error: 150,
options: [.ignoreFunctionDeclarations])
XCTAssertTrue(configuration1.ignoresFunctionDeclarations) XCTAssertTrue(configuration1.ignoresFunctionDeclarations)
let configuration2 = LineLengthConfiguration(warning: 100, let configuration2 = LineLengthConfiguration(length: severityLevels)
error: 150)
XCTAssertFalse(configuration2.ignoresFunctionDeclarations) XCTAssertFalse(configuration2.ignoresFunctionDeclarations)
} }
func testLineLengthConfigurationInitialiserSetsIgnoresComments() { func testLineLengthConfigurationInitialiserSetsIgnoresComments() {
let configuration1 = LineLengthConfiguration(warning: 100, let configuration1 = LineLengthConfiguration(length: severityLevels, ignoresComments: true)
error: 150,
options: [.ignoreComments])
XCTAssertTrue(configuration1.ignoresComments) XCTAssertTrue(configuration1.ignoresComments)
let configuration2 = LineLengthConfiguration(warning: 100, let configuration2 = LineLengthConfiguration(length: severityLevels)
error: 150)
XCTAssertFalse(configuration2.ignoresComments) XCTAssertFalse(configuration2.ignoresComments)
} }
func testLineLengthConfigurationInitialiserSetsIgnoresInterpolatedStrings() { func testLineLengthConfigurationInitialiserSetsIgnoresInterpolatedStrings() {
let configuration1 = LineLengthConfiguration(warning: 100, let configuration1 = LineLengthConfiguration(length: severityLevels, ignoresInterpolatedStrings: true)
error: 150,
options: [.ignoreInterpolatedStrings])
XCTAssertTrue(configuration1.ignoresInterpolatedStrings) XCTAssertTrue(configuration1.ignoresInterpolatedStrings)
let configuration2 = LineLengthConfiguration(warning: 100, let configuration2 = LineLengthConfiguration(length: severityLevels)
error: 150)
XCTAssertFalse(configuration2.ignoresInterpolatedStrings) XCTAssertFalse(configuration2.ignoresInterpolatedStrings)
} }
func testLineLengthConfigurationParams() { func testLineLengthConfigurationParams() {
let warning = 13 let warning = 13
let error = 10 let error = 10
let configuration = LineLengthConfiguration(warning: warning, let configuration = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: warning, error: error))
error: error)
let params = [RuleParameter(severity: .error, value: error), RuleParameter(severity: .warning, value: warning)] let params = [RuleParameter(severity: .error, value: error), RuleParameter(severity: .warning, value: warning)]
XCTAssertEqual(configuration.params, params) XCTAssertEqual(configuration.params, params)
} }
func testLineLengthConfigurationPartialParams() { func testLineLengthConfigurationPartialParams() {
let warning = 13 let configuration = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: 13))
let configuration = LineLengthConfiguration(warning: warning,
error: nil)
XCTAssertEqual(configuration.params, [RuleParameter(severity: .warning, value: 13)]) XCTAssertEqual(configuration.params, [RuleParameter(severity: .warning, value: 13)])
} }
func testLineLengthConfigurationThrowsOnBadConfig() { func testLineLengthConfigurationThrowsOnBadConfig() {
let config = "unknown" let config = "unknown"
var configuration = LineLengthConfiguration(warning: 100, error: 150) var configuration = LineLengthConfiguration(length: severityLevels)
checkError(Issue.unknownConfiguration) { checkError(Issue.unknownConfiguration) {
try configuration.apply(configuration: config) try configuration.apply(configuration: config)
} }
@ -96,7 +75,7 @@ class LineLengthConfigurationTests: SwiftLintTestCase {
] ]
for badConfig in badConfigs { for badConfig in badConfigs {
var configuration = LineLengthConfiguration(warning: 100, error: 150) var configuration = LineLengthConfiguration(length: severityLevels)
checkError(Issue.unknownConfiguration) { checkError(Issue.unknownConfiguration) {
try configuration.apply(configuration: badConfig) try configuration.apply(configuration: badConfig)
} }
@ -104,7 +83,7 @@ class LineLengthConfigurationTests: SwiftLintTestCase {
} }
func testLineLengthConfigurationApplyConfigurationWithArray() { func testLineLengthConfigurationApplyConfigurationWithArray() {
var configuration = LineLengthConfiguration(warning: 0, error: 0) var configuration = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: 0, error: 0))
let warning1 = 100 let warning1 = 100
let error1 = 100 let error1 = 100
@ -127,7 +106,7 @@ class LineLengthConfigurationTests: SwiftLintTestCase {
} }
func testLineLengthConfigurationApplyConfigurationWithDictionary() { func testLineLengthConfigurationApplyConfigurationWithDictionary() {
var configuration = LineLengthConfiguration(warning: 0, error: 0) var configuration = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: 0, error: 0))
let warning1 = 100 let warning1 = 100
let error1 = 100 let error1 = 100
@ -172,26 +151,28 @@ class LineLengthConfigurationTests: SwiftLintTestCase {
} }
func testLineLengthConfigurationCompares() { func testLineLengthConfigurationCompares() {
let configuration1 = LineLengthConfiguration(warning: 100, error: 100) let configuration1 = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: 100, error: 100))
let configuration2 = LineLengthConfiguration(warning: 100, let configuration2 = LineLengthConfiguration(
error: 100, length: SeverityLevelsConfiguration(warning: 100, error: 100),
options: [.ignoreFunctionDeclarations, ignoresFunctionDeclarations: true,
.ignoreComments]) ignoresComments: true
)
XCTAssertNotEqual(configuration1, configuration2) XCTAssertNotEqual(configuration1, configuration2)
let configuration3 = LineLengthConfiguration(warning: 100, error: 200) let configuration3 = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: 100, error: 200))
XCTAssertNotEqual(configuration1, configuration3) XCTAssertNotEqual(configuration1, configuration3)
let configuration4 = LineLengthConfiguration(warning: 200, error: 100) let configuration4 = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: 200, error: 200))
XCTAssertNotEqual(configuration1, configuration4) XCTAssertNotEqual(configuration1, configuration4)
let configuration5 = LineLengthConfiguration(warning: 100, error: 100) let configuration5 = LineLengthConfiguration(length: SeverityLevelsConfiguration(warning: 100, error: 100))
XCTAssertEqual(configuration1, configuration5) XCTAssertEqual(configuration1, configuration5)
let configuration6 = LineLengthConfiguration(warning: 100, let configuration6 = LineLengthConfiguration(
error: 100, length: SeverityLevelsConfiguration(warning: 100, error: 100),
options: [.ignoreFunctionDeclarations, ignoresFunctionDeclarations: true,
.ignoreComments]) ignoresComments: true
)
XCTAssertEqual(configuration2, configuration6) XCTAssertEqual(configuration2, configuration6)
} }
} }

View File

@ -54,26 +54,20 @@ class NameConfigurationTests: SwiftLintTestCase {
} }
func testNameConfigurationMinLengthThreshold() { func testNameConfigurationMinLengthThreshold() {
var nameConfig = NameConfiguration(minLengthWarning: 7, let nameConfig = NameConfiguration(minLengthWarning: 7,
minLengthError: 17, minLengthError: 17,
maxLengthWarning: 0, maxLengthWarning: 0,
maxLengthError: 0, maxLengthError: 0,
excluded: []) excluded: [])
XCTAssertEqual(nameConfig.minLengthThreshold, 17) XCTAssertEqual(nameConfig.minLengthThreshold, 17)
nameConfig.minLength.error = nil
XCTAssertEqual(nameConfig.minLengthThreshold, 7)
} }
func testNameConfigurationMaxLengthThreshold() { func testNameConfigurationMaxLengthThreshold() {
var nameConfig = NameConfiguration(minLengthWarning: 0, let nameConfig = NameConfiguration(minLengthWarning: 0,
minLengthError: 0, minLengthError: 0,
maxLengthWarning: 17, maxLengthWarning: 17,
maxLengthError: 7, maxLengthError: 7,
excluded: []) excluded: [])
XCTAssertEqual(nameConfig.maxLengthThreshold, 7) XCTAssertEqual(nameConfig.maxLengthThreshold, 7)
nameConfig.maxLength.error = nil
XCTAssertEqual(nameConfig.maxLengthThreshold, 17)
} }
} }

View File

@ -4,6 +4,11 @@ import SourceKittenFramework
import XCTest import XCTest
class RuleConfigurationTests: SwiftLintTestCase { class RuleConfigurationTests: SwiftLintTestCase {
private let defaultNestingConfiguration = NestingConfiguration(
typeLevel: SeverityLevelsConfiguration(warning: 0),
functionLevel: SeverityLevelsConfiguration(warning: 0)
)
func testNestingConfigurationSetsCorrectly() { func testNestingConfigurationSetsCorrectly() {
let config = [ let config = [
"type_level": [ "type_level": [
@ -15,10 +20,7 @@ class RuleConfigurationTests: SwiftLintTestCase {
"check_nesting_in_closures_and_statements": false, "check_nesting_in_closures_and_statements": false,
"always_allow_one_type_in_functions": true "always_allow_one_type_in_functions": true
] as [String: Any] ] as [String: Any]
var nestingConfig = NestingConfiguration(typeLevelWarning: 0, var nestingConfig = defaultNestingConfiguration
typeLevelError: nil,
functionLevelWarning: 0,
functionLevelError: nil)
do { do {
try nestingConfig.apply(configuration: config) try nestingConfig.apply(configuration: config)
XCTAssertEqual(nestingConfig.typeLevel.warning, 7) XCTAssertEqual(nestingConfig.typeLevel.warning, 7)
@ -34,10 +36,7 @@ class RuleConfigurationTests: SwiftLintTestCase {
func testNestingConfigurationThrowsOnBadConfig() { func testNestingConfigurationThrowsOnBadConfig() {
let config = 17 let config = 17
var nestingConfig = NestingConfiguration(typeLevelWarning: 0, var nestingConfig = defaultNestingConfiguration
typeLevelError: nil,
functionLevelWarning: 0,
functionLevelError: nil)
checkError(Issue.unknownConfiguration) { checkError(Issue.unknownConfiguration) {
try nestingConfig.apply(configuration: config) try nestingConfig.apply(configuration: config)
} }
@ -201,9 +200,11 @@ class RuleConfigurationTests: SwiftLintTestCase {
} }
func testTrailingWhitespaceConfigurationApplyConfigurationUpdatesSeverityConfiguration() { func testTrailingWhitespaceConfigurationApplyConfigurationUpdatesSeverityConfiguration() {
var configuration = TrailingWhitespaceConfiguration(ignoresEmptyLines: false, var configuration = TrailingWhitespaceConfiguration(
ignoresComments: true) severityConfiguration: .warning,
configuration.severityConfiguration.severity = .warning ignoresEmptyLines: false,
ignoresComments: true
)
do { do {
try configuration.apply(configuration: ["severity": "error"]) try configuration.apply(configuration: ["severity": "error"])

View File

@ -4,7 +4,7 @@ import XCTest
class UnusedDeclarationConfigurationTests: XCTestCase { class UnusedDeclarationConfigurationTests: XCTestCase {
func testParseConfiguration() throws { func testParseConfiguration() throws {
var testee = UnusedDeclarationConfiguration( var testee = UnusedDeclarationConfiguration(
severity: .warning, severityConfiguration: .warning,
includePublicAndOpen: false, includePublicAndOpen: false,
relatedUSRsToSkip: [] relatedUSRsToSkip: []
) )