diff --git a/CHANGELOG.md b/CHANGELOG.md index f25bc6edb..305936f47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,9 @@ * Improve performance by reducing calls to SourceKit. [Norio Nomura](https://github.com/norio-nomura) +* Improve performance of `LineLengthRule`. + [Norio Nomura](https://github.com/norio-nomura) + ##### Bug Fixes * AutoCorrect for TrailingNewlineRule only removes at most one line. diff --git a/Source/SwiftLintFramework/Rules/LineLengthRule.swift b/Source/SwiftLintFramework/Rules/LineLengthRule.swift index 8cf222080..b1bd3a722 100644 --- a/Source/SwiftLintFramework/Rules/LineLengthRule.swift +++ b/Source/SwiftLintFramework/Rules/LineLengthRule.swift @@ -30,12 +30,13 @@ public struct LineLengthRule: ParameterizedRule { public func validateFile(file: File) -> [StyleViolation] { return file.lines.flatMap { line in - for param in parameters.reverse() where line.content.characters.count > param.value { + let length = line.content.characters.count + for param in parameters.reverse() where length > param.value { return StyleViolation(ruleDescription: self.dynamicType.description, severity: param.severity, location: Location(file: file.path, line: line.index), reason: "Line should be \(parameters.first!.value) characters or less: " + - "currently \(line.content.characters.count) characters") + "currently \(length) characters") } return nil }