| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| attributes | Disabled | No | 
Attributes should be on their own lines in functions and types, but on the same line as variables and imports.
Non Triggering Examples
@objc var x: String@objc private var x: String@nonobjc var x: String@IBOutlet private var label: UILabel@IBOutlet @objc private var label: UILabel@NSCopying var name: NSString@NSManaged var name: String?@IBInspectable var cornerRadius: CGFloat@available(iOS 9.0, *)
 let stackView: UIStackView@NSManaged func addSomeObject(book: SomeObject)@IBAction func buttonPressed(button: UIButton)@objc
 @IBAction func buttonPressed(button: UIButton)@available(iOS 9.0, *)
 func animate(view: UIStackView)@available(iOS 9.0, *, message="A message")
 func animate(view: UIStackView)@nonobjc
 final class X@available(iOS 9.0, *)
 class UIStackView@NSApplicationMain
 class AppDelegate: NSObject, NSApplicationDelegate@UIApplicationMain
 class AppDelegate: NSObject, UIApplicationDelegate@IBDesignable
 class MyCustomView: UIView@testable import SourceKittenFramework@objc(foo_x)
 var x: String@available(iOS 9.0, *)
@objc(abc_stackView)
 let stackView: UIStackView@objc(abc_addSomeObject:)
 @NSManaged func addSomeObject(book: SomeObject)@objc(ABCThing)
 @available(iOS 9.0, *)
 class Thingclass Foo: NSObject {
 override var description: String { return "" }
}class Foo: NSObject {
 override func setUp() {}
}extension Property {
 @available(*, unavailable, renamed: "isOptional")
public var optional: Bool { fatalError() }
}@GKInspectable var maxSpeed: Float@discardableResult
 func a() -> Int@objc
 @discardableResult
 func a() -> Intfunc increase(f: @autoclosure () -> Int) -> Intfunc foo(completionHandler: @escaping () -> Void)Triggering Examples
@objc
 ↓var x: String@objc
 ↓var x: String@objc
 private ↓var x: String@nonobjc
 ↓var x: String@IBOutlet
 private ↓var label: UILabel@IBOutlet
 private ↓var label: UILabel@NSCopying
 ↓var name: NSString@NSManaged
 ↓var name: String?@IBInspectable
 ↓var cornerRadius: CGFloat@available(iOS 9.0, *) ↓let stackView: UIStackView@NSManaged
 ↓func addSomeObject(book: SomeObject)@IBAction
 ↓func buttonPressed(button: UIButton)@IBAction
 @objc
 ↓func buttonPressed(button: UIButton)@available(iOS 9.0, *) ↓func animate(view: UIStackView)@nonobjc final ↓class X@available(iOS 9.0, *) ↓class UIStackView@available(iOS 9.0, *)
 @objc ↓class UIStackView@available(iOS 9.0, *) @objc
 ↓class UIStackView@available(iOS 9.0, *)
 ↓class UIStackView@UIApplicationMain ↓class AppDelegate: NSObject, UIApplicationDelegate@IBDesignable ↓class MyCustomView: UIView@testable
↓import SourceKittenFramework@testable
↓import SourceKittenFramework@objc(foo_x) ↓var x: String@available(iOS 9.0, *) @objc(abc_stackView)
 ↓let stackView: UIStackView@objc(abc_addSomeObject:) @NSManaged
 ↓func addSomeObject(book: SomeObject)@objc(abc_addSomeObject:)
 @NSManaged
 ↓func addSomeObject(book: SomeObject)@available(iOS 9.0, *)
 @objc(ABCThing) ↓class Thing@GKInspectable
 ↓var maxSpeed: Float@discardableResult ↓func a() -> Int@objc
 @discardableResult ↓func a() -> Int@objc
 @discardableResult
 ↓func a() -> Int| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| class_delegate_protocol | Enabled | No | 
Delegate protocols should be class-only so they can be weakly referenced.
Non Triggering Examples
protocol FooDelegate: class {}protocol FooDelegate: class, BarDelegate {}protocol Foo {}class FooDelegate {}@objc protocol FooDelegate {}@objc(MyFooDelegate)
 protocol FooDelegate {}protocol FooDelegate: BarDelegate {}Triggering Examples
↓protocol FooDelegate {}↓protocol FooDelegate: Bar {}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| closing_brace | Enabled | Yes | 
Closing brace with closing parenthesis should not have any whitespaces in the middle.
Non Triggering Examples
[].map({ })[].map(
  { }
)Triggering Examples
[].map({ ↓} )[].map({ ↓}	)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| closure_end_indentation | Disabled | No | 
Closure end should have the same indentation as the line that started it.
Non Triggering Examples
SignalProducer(values: [1, 2, 3])
   .startWithNext { number in
       print(number)
   }[1, 2].map { $0 + 1 }return matchPattern(pattern, withSyntaxKinds: [.comment]).flatMap { range in
   return Command(string: contents, range: range)
}.flatMap { command in
   return command.expand()
}Triggering Examples
SignalProducer(values: [1, 2, 3])
   .startWithNext { number in
       print(number)
↓}return matchPattern(pattern, withSyntaxKinds: [.comment]).flatMap { range in
   return Command(string: contents, range: range)
   ↓}.flatMap { command in
   return command.expand()
↓}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| closure_parameter_position | Enabled | No | 
Closure parameters should be on the same line as opening brace.
Non Triggering Examples
[1, 2].map { $0 + 1 }[1, 2].map({ $0 + 1 })[1, 2].map { number in
 number + 1 
}[1, 2].map { number -> Int in
 number + 1 
}[1, 2].map { (number: Int) -> Int in
 number + 1 
}[1, 2].map { [weak self] number in
 number + 1 
}[1, 2].something(closure: { number in
 number + 1 
})let isEmpty = [1, 2].isEmpty()rlmConfiguration.migrationBlock.map { rlmMigration in
return { migration, schemaVersion in
rlmMigration(migration.rlmMigration, schemaVersion)
}
}let mediaView: UIView = { [weak self] index in
   return UIView()
}(index)Triggering Examples
[1, 2].map {
 ↓number in
 number + 1 
}[1, 2].map {
 ↓number -> Int in
 number + 1 
}[1, 2].map {
 (↓number: Int) -> Int in
 number + 1 
}[1, 2].map {
 [weak self] ↓number in
 number + 1 
}[1, 2].map { [weak self]
 ↓number in
 number + 1 
}[1, 2].map({
 ↓number in
 number + 1 
})[1, 2].something(closure: {
 ↓number in
 number + 1 
})[1, 2].reduce(0) {
 ↓sum, ↓number in
 number + sum 
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| closure_spacing | Disabled | No | 
Closure expressions should have a single space inside each brace.
Non Triggering Examples
[].map ({ $0.description })[].filter { $0.contains(location) }extension UITableViewCell: ReusableView { }extension UITableViewCell: ReusableView {}Triggering Examples
[].filter(↓{$0.contains(location)})[].map(↓{$0})| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| colon | Enabled | Yes | 
Colons should be next to the identifier when specifying a type and next to the key in dictionary literals.
Non Triggering Examples
let abc: Voidlet abc: [Void: Void]let abc: (Void, Void)let abc: ([Void], String, Int)let abc: [([Void], String, Int)]let abc: String="def"let abc: Int=0let abc: Enum=Enum.Valuefunc abc(def: Void) {}func abc(def: Void, ghi: Void) {}// 周斌佳年周斌佳
let abc: String = "abc:"let abc = [Void: Void]()let abc = [1: [3: 2], 3: 4]let abc = ["string": "string"]let abc = ["string:string": "string"]Triggering Examples
let ↓abc:Voidlet ↓abc:  Voidlet ↓abc :Voidlet ↓abc : Voidlet ↓abc : [Void: Void]let ↓abc : (Void, String, Int)let ↓abc : ([Void], String, Int)let ↓abc : [([Void], String, Int)]let ↓abc:  (Void, String, Int)let ↓abc:  ([Void], String, Int)let ↓abc:  [([Void], String, Int)]let ↓abc :String="def"let ↓abc :Int=0let ↓abc :Int = 0let ↓abc:Int=0let ↓abc:Int = 0let ↓abc:Enum=Enum.Valuefunc abc(↓def:Void) {}func abc(↓def:  Void) {}func abc(↓def :Void) {}func abc(↓def : Void) {}func abc(def: Void, ↓ghi :Void) {}let abc = [Void↓:Void]()let abc = [Void↓ : Void]()let abc = [Void↓:  Void]()let abc = [Void↓ :  Void]()let abc = [1: [3↓ : 2], 3: 4]let abc = [1: [3↓ : 2], 3↓:  4]| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| comma | Enabled | Yes | 
There should be no space before and one after any comma.
Non Triggering Examples
func abc(a: String, b: String) { }abc(a: "string", b: "string"enum a { case a, b, c }func abc(
  a: String,  // comment
  bcd: String // comment
) {
}func abc(
  a: String,
  bcd: String
) {
}Triggering Examples
func abc(a: String↓ ,b: String) { }func abc(a: String↓ ,b: String↓ ,c: String↓ ,d: String) { }abc(a: "string"↓,b: "string"enum a { case a↓ ,b }let result = plus(
    first: 3↓ , // #683
    second: 4
)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| conditional_returns_on_newline | Disabled | No | 
Conditional statements should always return on the next line
Non Triggering Examples
guard true else {
 return true
}guard true,
 let x = true else {
 return true
}if true else {
 return true
}if true,
 let x = true else {
 return true
}if textField.returnKeyType == .Next {if true { // return }/*if true { */ return }Triggering Examples
↓guard true else { return }↓if true { return }↓if true { break } else { return }↓if true { break } else {       return }↓if true { return "YES" } else { return "NO" }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| control_statement | Enabled | No | 
if,for,while,do statements shouldn't wrap their conditionals in parentheses.
Non Triggering Examples
if condition {if (a, b) == (0, 1) {if (a || b) && (c || d) {if (min...max).contains(value) {if renderGif(data) {renderGif(data)for item in collection {for (key, value) in dictionary {for (index, value) in enumerate(array) {for var index = 0; index < 42; index++ {guard condition else {while condition {} while condition {do { ; } while condition {switch foo {Triggering Examples
↓if (condition) {↓if(condition) {↓if ((a || b) && (c || d)) {↓if ((min...max).contains(value)) {↓for (item in collection) {↓for (var index = 0; index < 42; index++) {↓for(item in collection) {↓for(var index = 0; index < 42; index++) {↓guard (condition) else {↓while (condition) {↓while(condition) {} ↓while (condition) {} ↓while(condition) {do { ; } ↓while(condition) {do { ; } ↓while (condition) {↓switch (foo) {| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| custom_rules | Enabled | No | 
Create custom rules by providing a regex string. Optionally specify what syntax kinds to match against, the severity level, and what message to display.
| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| cyclomatic_complexity | Enabled | No | 
Complexity of function bodies should be limited.
Non Triggering Examples
func f1() {
if true {
for _ in 1..5 { } }
if false { }
}func f(code: Int) -> Int {switch code {
 case 0: fallthrough
case 0: return 1
case 0: return 1
case 0: return 1
case 0: return 1
case 0: return 1
case 0: return 1
case 0: return 1
case 0: return 1
default: return 1}}func f1() {if true {}; if true {}; if true {}; if true {}; if true {}; if true {}
func f2() {
if true {}; if true {}; if true {}; if true {}; if true {}
}}Triggering Examples
↓func f1() {
  if true {
    if true {
      if false {}
    }
  }
  if false {}
  let i = 0
  switch i {
  case 1: break
  case 2: break
  case 3: break
  case 4: break
 default: break
  }
  for _ in 1...5 {
    guard true else {
      return
    }
  }
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| dynamic_inline | Enabled | No | 
avoid using 'dynamic' and '@inline(__always)' together.
Non Triggering Examples
class C {
dynamic func f() {}}class C {
@inline(__always) func f() {}}class C {
@inline(never) dynamic func f() {}}Triggering Examples
class C {
@inline(__always) dynamic ↓func f() {}
}class C {
@inline(__always) public dynamic ↓func f() {}
}class C {
@inline(__always) dynamic internal ↓func f() {}
}class C {
@inline(__always)
dynamic ↓func f() {}
}class C {
@inline(__always)
dynamic
↓func f() {}
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| empty_count | Disabled | No | 
Prefer checking isEmpty over comparing count to zero.
Non Triggering Examples
var count = 0[Int]().isEmpty[Int]().count > 1[Int]().count == 1Triggering Examples
[Int]().↓count == 0[Int]().↓count > 0[Int]().↓count != 0| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| empty_parameters | Enabled | Yes | 
Prefer () ->  over Void -> .
Non Triggering Examples
let abc: () -> Void = {}func foo(completion: () -> Void)func foo(completion: () thows -> Void)let foo: (ConfigurationTests) -> Void throws -> Void)let foo: (ConfigurationTests) ->   Void throws -> Void)let foo: (ConfigurationTests) ->Void throws -> Void)Triggering Examples
let abc: ↓Void -> Void = {}func foo(completion: ↓Void -> Void)func foo(completion: ↓Void throws -> Void)let foo: ↓Void -> () throws -> Void)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| empty_parentheses_with_trailing_closure | Enabled | Yes | 
When using trailing closures, empty parentheses should be avoided after the method call.
Non Triggering Examples
[1, 2].map { $0 + 1 }[1, 2].map({ $0 + 1 })[1, 2].reduce(0) { $0 + $1 }[1, 2].map { number in
 number + 1 
}let isEmpty = [1, 2].isEmpty()UIView.animateWithDuration(0.3, animations: {
   self.disableInteractionRightView.alpha = 0
}, completion: { _ in
   ()
})Triggering Examples
[1, 2].map↓() { $0 + 1 }[1, 2].map↓( ) { $0 + 1 }[1, 2].map↓() { number in
 number + 1 
}[1, 2].map↓(  ) { number in
 number + 1 
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| explicit_init | Disabled | Yes | 
Explicitly calling .init() should be avoided.
Non Triggering Examples
import Foundation; class C: NSObject { override init() { super.init() }}struct S { let n: Int }; extension S { init() { self.init(n: 1) } }[1].flatMap(String.init)[String.self].map { $0.init(1) }[String.self].map { type in type.init(1) }Triggering Examples
[1].flatMap{String↓.init($0)}[String.self].map { Type in Type↓.init(1) }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| file_header | Disabled | No | 
Files should have consistent header comments.
Non Triggering Examples
let foo = "Copyright"let foo = 2 // Copyrightlet foo = 2
 // CopyrightTriggering Examples
// ↓Copyright//
// ↓Copyright//
//  FileHeaderRule.swift
//  SwiftLint
//
//  Created by Marcelo Fabri on 27/11/16.
//  ↓Copyright © 2016 Realm. All rights reserved.
//| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| file_length | Enabled | No | 
Files should not span too many lines.
Non Triggering Examples
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//Triggering Examples
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| first_where | Disabled | No | 
Prefer using .first(where:) over .filter { }.first in collections.
Non Triggering Examples
kinds.filter(excludingKinds.contains).isEmpty && kinds.first == .identifiermyList.first(where: { $0 % 2 == 0 })matchPattern(pattern).filter { $0.first == .identifier }Triggering Examples
↓myList.filter { $0 % 2 == 0 }.first↓myList.filter({ $0 % 2 == 0 }).first↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first?.something()↓myList.filter(someFunction).first| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| force_cast | Enabled | No | 
Force casts should be avoided.
Non Triggering Examples
NSNumber() as? IntTriggering Examples
NSNumber() ↓as! Int| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| force_try | Enabled | No | 
Force tries should be avoided.
Non Triggering Examples
func a() throws {}; do { try a() } catch {}Triggering Examples
func a() throws {}; ↓try! a()| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| force_unwrapping | Disabled | No | 
Force unwrapping should be avoided.
Non Triggering Examples
if let url = NSURL(string: query)navigationController?.pushViewController(viewController, animated: true)let s as! Testtry! canThrowErrors()let object: Any!@IBOutlet var constraints: [NSLayoutConstraint]!setEditing(!editing, animated: true)navigationController.setNavigationBarHidden(!navigationController.navigationBarHidden, animated: true)if addedToPlaylist && (!self.selectedFilters.isEmpty || self.searchBar?.text?.isEmpty == false) {}print("\(xVar)!")Triggering Examples
let url = NSURL(string: query)↓!navigationController↓!.pushViewController(viewController, animated: true)let unwrapped = optional↓!return cell↓!let url = NSURL(string: "http://www.google.com")↓!let dict = ["Boooo": "👻"]func bla() -> String { return dict["Boooo"]↓! }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| function_body_length | Enabled | No | 
Functions bodies should not span too many lines.
| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| function_parameter_count | Enabled | No | 
Number of function parameters should be low.
Non Triggering Examples
init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}init (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}`init`(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}init?(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}init?<T>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}init?<T: String>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}func f2(p1: Int, p2: Int) { }func f(a: Int, b: Int, c: Int, d: Int, x: Int = 42) {}func f(a: [Int], b: Int, c: Int, d: Int, f: Int) -> [Int] {
let s = a.flatMap { $0 as? [String: Int] } ?? []}}Triggering Examples
↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}↓func initialValue(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int = 2, g: Int) {}struct Foo {
init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
↓func bar(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| implicit_getter | Enabled | No | 
Computed read-only properties should avoid using the get keyword.
Non Triggering Examples
class Foo {
  var foo: Int {
 get {
 return 3
}
 set {
 _abc = newValue 
}
}
}class Foo {
  var foo: Int {
 return 20 
} 
}
}class Foo {
  static var foo: Int {
 return 20 
} 
}
}class Foo {
  static foo: Int {
 get {
 return 3
}
 set {
 _abc = newValue 
}
}
}class Foo {
  var foo: Int
}class Foo {
  var foo: Int {
 return getValueFromDisk() 
} 
}
}class Foo {
  var foo: String {
 return "get" 
} 
}
}protocol Foo {
 var foo: Int { get }
protocol Foo {
 var foo: Int { get set }
class Foo {
  var foo: Int {
    struct Bar {
      var bar: Int {
        get { return 1 }
        set { _ = newValue }
      }
    }
    return Bar().bar
  }
}Triggering Examples
class Foo {
  var foo: Int {
 ↓get {
 return 20 
} 
} 
}
}class Foo {
  var foo: Int {
 ↓get{
 return 20 
} 
} 
}
}class Foo {
  static var foo: Int {
 ↓get {
 return 20 
} 
} 
}
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| large_tuple | Enabled | No | 
Tuples shouldn't have many members. Create a custom type instead.
Non Triggering Examples
let foo: (Int, Int)let foo: (start: Int, end: Int)let foo: (Int, (Int, String))func foo() -> (Int, Int)func foo() -> (Int, Int) {}func foo(bar: String) -> (Int, Int)func foo(bar: String) -> (Int, Int) {}func foo() throws -> (Int, Int)func foo() throws -> (Int, Int) {}let foo: (Int, Int, Int) -> VoidTriggering Examples
↓let foo: (Int, Int, Int)↓let foo: (start: Int, end: Int, value: String)↓let foo: (Int, (Int, Int, Int))func foo(↓bar: (Int, Int, Int))func foo() -> ↓(Int, Int, Int)func foo() -> ↓(Int, Int, Int) {}func foo(bar: String) -> ↓(Int, Int, Int)func foo(bar: String) -> ↓(Int, Int, Int) {}func foo() throws -> ↓(Int, Int, Int)func foo() throws -> ↓(Int, Int, Int) {}func foo() throws -> ↓(Int, ↓(String, String, String), Int) {}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| leading_whitespace | Enabled | Yes | 
Files should not contain leading whitespace.
Non Triggering Examples
//Triggering Examples
 //| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| legacy_cggeometry_functions | Enabled | Yes | 
Struct extension properties and methods are preferred over legacy functions
Non Triggering Examples
rect.widthrect.heightrect.minXrect.midXrect.maxXrect.minYrect.midYrect.maxYrect.isNullrect.isEmptyrect.isInfiniterect.standardizedrect.integralrect.insetBy(dx: 5.0, dy: -7.0)rect.offsetBy(dx: 5.0, dy: -7.0)rect1.union(rect2)rect1.intersect(rect2)rect1.contains(rect2)rect.contains(point)rect1.intersects(rect2)Triggering Examples
↓CGRectGetWidth(rect)↓CGRectGetHeight(rect)↓CGRectGetMinX(rect)↓CGRectGetMidX(rect)↓CGRectGetMaxX(rect)↓CGRectGetMinY(rect)↓CGRectGetMidY(rect)↓CGRectGetMaxY(rect)↓CGRectIsNull(rect)↓CGRectIsEmpty(rect)↓CGRectIsInfinite(rect)↓CGRectStandardize(rect)↓CGRectIntegral(rect)↓CGRectInset(rect, 10, 5)↓CGRectOffset(rect, -2, 8.3)↓CGRectUnion(rect1, rect2)↓CGRectIntersection(rect1, rect2)↓CGRectContainsRect(rect1, rect2)↓CGRectContainsPoint(rect, point)↓CGRectIntersectsRect(rect1, rect2)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| legacy_constant | Enabled | Yes | 
Struct-scoped constants are preferred over legacy global constants.
Non Triggering Examples
CGRect.infiniteCGPoint.zeroCGRect.zeroCGSize.zeroNSPoint.zeroNSRect.zeroNSSize.zeroCGRect.nullTriggering Examples
↓CGRectInfinite↓CGPointZero↓CGRectZero↓CGSizeZero↓NSZeroPoint↓NSZeroRect↓NSZeroSize↓CGRectNull| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| legacy_constructor | Enabled | Yes | 
Swift constructors are preferred over legacy convenience functions.
Non Triggering Examples
CGPoint(x: 10, y: 10)CGPoint(x: xValue, y: yValue)CGSize(width: 10, height: 10)CGSize(width: aWidth, height: aHeight)CGRect(x: 0, y: 0, width: 10, height: 10)CGRect(x: xVal, y: yVal, width: aWidth, height: aHeight)CGVector(dx: 10, dy: 10)CGVector(dx: deltaX, dy: deltaY)NSPoint(x: 10, y: 10)NSPoint(x: xValue, y: yValue)NSSize(width: 10, height: 10)NSSize(width: aWidth, height: aHeight)NSRect(x: 0, y: 0, width: 10, height: 10)NSRect(x: xVal, y: yVal, width: aWidth, height: aHeight)NSRange(location: 10, length: 1)NSRange(location: loc, length: len)UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)UIEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)NSEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)NSEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)Triggering Examples
↓CGPointMake(10, 10)↓CGPointMake(xVal, yVal)↓CGSizeMake(10, 10)↓CGSizeMake(aWidth, aHeight)↓CGRectMake(0, 0, 10, 10)↓CGRectMake(xVal, yVal, width, height)↓CGVectorMake(10, 10)↓CGVectorMake(deltaX, deltaY)↓NSMakePoint(10, 10)↓NSMakePoint(xVal, yVal)↓NSMakeSize(10, 10)↓NSMakeSize(aWidth, aHeight)↓NSMakeRect(0, 0, 10, 10)↓NSMakeRect(xVal, yVal, width, height)↓NSMakeRange(10, 1)↓NSMakeRange(loc, len)↓UIEdgeInsetsMake(0, 0, 10, 10)↓UIEdgeInsetsMake(top, left, bottom, right)↓NSEdgeInsetsMake(0, 0, 10, 10)↓NSEdgeInsetsMake(top, left, bottom, right)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| legacy_nsgeometry_functions | Enabled | Yes | 
Struct extension properties and methods are preferred over legacy functions
Non Triggering Examples
rect.widthrect.heightrect.minXrect.midXrect.maxXrect.minYrect.midYrect.maxYrect.isEmptyrect.integralrect.insetBy(dx: 5.0, dy: -7.0)rect.offsetBy(dx: 5.0, dy: -7.0)rect1.union(rect2)rect1.intersect(rect2)rect1.contains(rect2)rect.contains(point)rect1.intersects(rect2)Triggering Examples
↓NSWidth(rect)↓NSHeight(rect)↓NSMinX(rect)↓NSMidX(rect)↓NSMaxX(rect)↓NSMinY(rect)↓NSMidY(rect)↓NSMaxY(rect)↓NSEqualRects(rect1, rect2)↓NSEqualSizes(size1, size2)↓NSEqualPoints(point1, point2)↓NSEdgeInsetsEqual(insets2, insets2)↓NSIsEmptyRect(rect)↓NSIntegralRect(rect)↓NSInsetRect(rect, 10, 5)↓NSOffsetRect(rect, -2, 8.3)↓NSUnionRect(rect1, rect2)↓NSIntersectionRect(rect1, rect2)↓NSContainsRect(rect1, rect2)↓NSPointInRect(rect, point)↓NSIntersectsRect(rect1, rect2)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| line_length | Enabled | No | 
Lines should not span too many characters.
Non Triggering Examples
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")Triggering Examples
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| mark | Enabled | Yes | 
MARK comment should be in valid format.
Non Triggering Examples
// MARK: good// MARK: - good// MARK: -Triggering Examples
↓//MARK: bad↓// MARK:bad↓//MARK:bad↓//  MARK: bad↓// MARK:  bad↓// MARK: -bad↓// MARK:- bad↓// MARK:-bad↓//MARK: - bad↓//MARK:- bad↓//MARK: -bad↓//MARK:-bad| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| missing_docs | Disabled | No | 
Public declarations should be documented.
Non Triggering Examples
/// docs
public func a() {}/** docs */
public func a() {}func a() {}internal func a() {}private func a() {}// regular comment
func a() {}/* regular comment */
func a() {}/// docs
public protocol A {
/// docs
var b: Int { get } }
/// docs
public struct C: A {
public let b: Int
}/// docs
public class A {
/// docs
public func b() {}
}
/// docs
public class B: A { override public func b() {} }import Foundation
/// docs
public class B: NSObject {
// no docs
override public var description: String { fatalError() } }Triggering Examples
public func a() {}// regular comment
public func a() {}/* regular comment */
public func a() {}/// docs
public protocol A {
// no docs
var b: Int { get } }
/// docs
public struct C: A {
public let b: Int
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| nesting | Enabled | No | 
Types should be nested at most 1 level deep, and statements should be nested at most 5 levels deep.
Non Triggering Examples
class Class0 { class Class1 {} }func func0() {
func func1() {
func func2() {
func func3() {
func func4() { func func5() {
}
}
}
}
}
}struct Class0 { struct Class1 {} }func func0() {
func func1() {
func func2() {
func func3() {
func func4() { func func5() {
}
}
}
}
}
}enum Class0 { enum Class1 {} }func func0() {
func func1() {
func func2() {
func func3() {
func func4() { func func5() {
}
}
}
}
}
}enum Enum0 { enum Enum1 { case Case } }Triggering Examples
class A { class B { ↓class C {} } }struct A { struct B { ↓struct C {} } }enum A { enum B { ↓enum C {} } }func func0() {
func func1() {
func func2() {
func func3() {
func func4() { func func5() {
↓func func6() {
}
}
}
}
}
}
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| nimble_operator | Disabled | No | 
Prefer Nimble operator overloads over free matcher functions.
Non Triggering Examples
expect(seagull.squawk) != "Hi!"expect("Hi!") == "Hi!"expect(10) > 2expect(10) >= 10expect(10) < 11expect(10) <= 10expect(x) === xexpect(10) == 10expect(object.asyncFunction()).toEventually(equal(1))expect(actual).to(haveCount(expected))Triggering Examples
↓expect(seagull.squawk).toNot(equal("Hi"))↓expect(12).toNot(equal(10))↓expect(10).to(equal(10))↓expect(10).to(beGreaterThan(8))↓expect(10).to(beGreaterThanOrEqualTo(10))↓expect(10).to(beLessThan(11))↓expect(10).to(beLessThanOrEqualTo(10))↓expect(x).to(beIdenticalTo(x))expect(10) > 2
 ↓expect(10).to(beGreaterThan(2))| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| number_separator | Disabled | Yes | 
Underscores should be used as thousand separator in large decimal numbers.
Non Triggering Examples
let foo = -100let foo = -1_000let foo = -1_000_000let foo = -1.000_1let foo = -1_000_000.000_000_1let binary = -0b10000let binary = -0b1000_0001let hex = -0xAlet hex = -0xAA_BBlet octal = -0o21let octal = -0o21_1let exp = -1_000_000.000_000e2let foo = +100let foo = +1_000let foo = +1_000_000let foo = +1.000_1let foo = +1_000_000.000_000_1let binary = +0b10000let binary = +0b1000_0001let hex = +0xAlet hex = +0xAA_BBlet octal = +0o21let octal = +0o21_1let exp = +1_000_000.000_000e2let foo = 100let foo = 1_000let foo = 1_000_000let foo = 1.000_1let foo = 1_000_000.000_000_1let binary = 0b10000let binary = 0b1000_0001let hex = 0xAlet hex = 0xAA_BBlet octal = 0o21let octal = 0o21_1let exp = 1_000_000.000_000e2Triggering Examples
let foo = ↓-10_0let foo = ↓-1000let foo = ↓-1000e2let foo = ↓-1__000let foo = ↓-1.0001let foo = ↓-1_000_000.000000_1let foo = ↓-1000000.000000_1let foo = +↓10_0let foo = +↓1000let foo = +↓1000e2let foo = +↓1__000let foo = +↓1.0001let foo = +↓1_000_000.000000_1let foo = +↓1000000.000000_1let foo = ↓10_0let foo = ↓1000let foo = ↓1000e2let foo = ↓1__000let foo = ↓1.0001let foo = ↓1_000_000.000000_1let foo = ↓1000000.000000_1| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| object_literal | Disabled | No | 
Prefer object literals over image and color inits.
Non Triggering Examples
let image = #imageLiteral(resourceName: "image.jpg")let color = #colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)let image = UIImage(named: aVariable)let image = UIImage(named: "interpolated \(variable)")let color = UIColor(red: value, green: value, blue: value, alpha: 1)let image = NSImage(named: aVariable)let image = NSImage(named: "interpolated \(variable)")let color = NSColor(red: value, green: value, blue: value, alpha: 1)Triggering Examples
let image = ↓UIImage(named: "foo")let color = ↓UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)let color = ↓UIColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)let color = ↓UIColor(white: 0.5, alpha: 1)let image = ↓NSImage(named: "foo")let color = ↓NSColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)let color = ↓NSColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)let color = ↓NSColor(white: 0.5, alpha: 1)let image = ↓UIImage.init(named: "foo")let color = ↓UIColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)let color = ↓UIColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)let color = ↓UIColor.init(white: 0.5, alpha: 1)let image = ↓NSImage.init(named: "foo")let color = ↓NSColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)let color = ↓NSColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)let color = ↓NSColor.init(white: 0.5, alpha: 1)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| opening_brace | Enabled | Yes | 
Opening braces should be preceded by a single space and on the same line as the declaration.
Non Triggering Examples
func abc() {
}[].map() { $0 }[].map({ })if let a = b { }while a == b { }guard let a = b else { }if
	let a = b,
	let c = d
	where a == c
{ }while
	let a = b,
	let c = d
	where a == c
{ }guard
	let a = b,
	let c = d
	where a == c else
{ }Triggering Examples
func abc(↓){
}func abc()↓
	{ }[].map(↓){ $0 }[].map↓( { } )if let a = b{ }while a == b{ }guard let a = b else{ }if
	let a = b,
	let c = d
	where a == c{ }while
	let a = b,
	let c = d
	where a == c{ }guard
	let a = b,
	let c = d
	where a == c else{ }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| operator_usage_whitespace | Disabled | Yes | 
Operators should be surrounded by a single whitespace when they are being used.
Non Triggering Examples
let foo = 1 + 2let foo = 1 > 2let foo = !falselet foo: Int?let foo: Array<String>let foo: [String]let foo = 1 + 
  2let range = 1...3let range = 1 ... 3let range = 1..<3#if swift(>=3.0)array.removeAtIndex(-200)let name = "image-1"button.setImage(#imageLiteral(resourceName: "image-1"), for: .normal)Triggering Examples
let foo = 1↓+2let foo = 1↓   + 2let foo = 1↓   +    2let foo = 1↓ +    2let foo↓=1↓+2let foo↓=1 + 2let foo↓=barlet range = 1↓ ..<  3let foo = bar↓   ?? 0let foo = bar↓??0let foo = bar↓ !=  0let foo = bar↓ !==  bar2let v8 = Int8(1)↓  << 6let v8 = 1↓ <<  (6)let v8 = 1↓ <<  (6)
 let foo = 1 > 2| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| operator_whitespace | Enabled | No | 
Operators should be surrounded by a single whitespace when defining them.
Non Triggering Examples
func <| (lhs: Int, rhs: Int) -> Int {}func <|< <A>(lhs: A, rhs: A) -> A {}func abc(lhs: Int, rhs: Int) -> Int {}Triggering Examples
↓func <|(lhs: Int, rhs: Int) -> Int {}↓func <|<<A>(lhs: A, rhs: A) -> A {}↓func <|  (lhs: Int, rhs: Int) -> Int {}↓func <|<  <A>(lhs: A, rhs: A) -> A {}↓func  <| (lhs: Int, rhs: Int) -> Int {}↓func  <|< <A>(lhs: A, rhs: A) -> A {}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| overridden_super_call | Disabled | No | 
Some overridden methods should always call super
Non Triggering Examples
class VC: UIViewController {
	override func viewWillAppear(_ animated: Bool) {
		super.viewWillAppear(animated)
	}
}class VC: UIViewController {
	override func viewWillAppear(_ animated: Bool) {
		self.method1()
		super.viewWillAppear(animated)
		self.method2()
	}
}class VC: UIViewController {
	override func loadView() {
	}
}class Some {
	func viewWillAppear(_ animated: Bool) {
	}
}Triggering Examples
class VC: UIViewController {
	override func viewWillAppear(_ animated: Bool) ↓{
		//Not calling to super
		self.method()
	}
}class VC: UIViewController {
	override func viewWillAppear(_ animated: Bool) ↓{
		super.viewWillAppear(animated)
		//Other code
		super.viewWillAppear(animated)
	}
}class VC: UIViewController {
	override func didReceiveMemoryWarning() ↓{
	}
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| private_outlet | Disabled | No | 
IBOutlets should be private to avoid leaking UIKit to higher layers.
Non Triggering Examples
class Foo {
  @IBOutlet private var label: UILabel?
}class Foo {
  @IBOutlet private var label: UILabel!
}class Foo {
  var notAnOutlet: UILabel
}class Foo {
  @IBOutlet weak private var label: UILabel?
}class Foo {
  @IBOutlet private weak var label: UILabel?
}Triggering Examples
class Foo {
  @IBOutlet ↓var label: UILabel?
}class Foo {
  @IBOutlet ↓var label: UILabel!
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| private_unit_test | Enabled | No | 
Unit tests marked private are silently skipped.
Non Triggering Examples
class FooTest: XCTestCase { func test1() {}
 internal func test2() {}
 public func test3() {}
 }internal class FooTest: XCTestCase { func test1() {}
 internal func test2() {}
 public func test3() {}
 }public class FooTest: XCTestCase { func test1() {}
 internal func test2() {}
 public func test3() {}
 }private class Foo: NSObject { func test1() {}
 internal func test2() {}
 public func test3() {}
 }private class Foo { func test1() {}
 internal func test2() {}
 public func test3() {}
 }Triggering Examples
private ↓class FooTest: XCTestCase { func test1() {}
 internal func test2() {}
 public func test3() {}
 private func test4() {}
 }class FooTest: XCTestCase { func test1() {}
 internal func test2() {}
 public func test3() {}
 private ↓func test4() {}
 }internal class FooTest: XCTestCase { func test1() {}
 internal func test2() {}
 public func test3() {}
 private ↓func test4() {}
 }public class FooTest: XCTestCase { func test1() {}
 internal func test2() {}
 public func test3() {}
 private ↓func test4() {}
 }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| prohibited_super_call | Disabled | No | 
Some methods should not call super
Non Triggering Examples
class VC: UIViewController {
	override func loadView() {
	}
}class NSView {
	func updateLayer() {
		self.method1()	}
}Triggering Examples
class VC: UIViewController {
	override func loadView() ↓{
		super.loadView()
	}
}class VC: NSFileProviderExtension {
	override func providePlaceholder(at url: URL,completionHandler: @escaping (Error?) -> Void) ↓{
		self.method1()
		super.providePlaceholder(at:url, completionHandler: completionHandler)
	}
}class VC: NSView {
	override func updateLayer() ↓{
		self.method1()
		super.updateLayer()
		self.method2()
	}
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| redundant_nil_coalescing | Disabled | Yes | 
nil coalescing operator is only evaluated if the lhs is nil , coalescing operator with nil as rhs is redundant
Non Triggering Examples
var myVar: Int?; myVar ?? 0Triggering Examples
var myVar: Int? = nil; myVar↓ ?? nilvar myVar: Int? = nil; myVar↓??nil| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| redundant_optional_initialization | Enabled | Yes | 
Initializing an optional variable with nil is redundant.
Non Triggering Examples
var myVar: Int?let myVar: Int? = nilvar myVar: Int? = 0func foo(bar: Int? = 0) { }var myVar: Optional<Int>let myVar: Optional<Int> = nilvar myVar: Optional<Int> = 0Triggering Examples
var myVar: Int?↓ = nilvar myVar: Optional<Int>↓ = nilvar myVar: Int?↓=nilvar myVar: Optional<Int>↓=nil| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| redundant_string_enum_value | Enabled | No | 
String enum values can be omitted when they are equal to the enumcase name.
Non Triggering Examples
enum Numbers: String {
 case one
 case two
}enum Numbers: Int {
 case one = 1
 case two = 2
}enum Numbers: String {
 case one = "ONE"
 case two = "TWO"
}enum Numbers: String {
 case one = "ONE"
 case two = "two"
}enum Numbers: String {
 case one, two
}Triggering Examples
enum Numbers: String {
 case one = ↓"one"
 case two = ↓"two"
}enum Numbers: String {
 case one = ↓"one", two = ↓"two"
}enum Numbers: String {
 case one, two = ↓"two"
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| redundant_void_return | Enabled | Yes | 
Returning Void in a function declaration is redundant.
Non Triggering Examples
func foo() {}func foo() -> Int {}func foo() -> Int -> Void {}let foo: Int -> Voidfunc foo() -> Int -> () {}let foo: Int -> ()Triggering Examples
func foo()↓ -> Void {}protocol Foo {
 func foo()↓ -> Void
}func foo()↓ -> () {}protocol Foo {
 func foo()↓ -> ()
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| return_arrow_whitespace | Enabled | Yes | 
Return arrow and return type should be separated by a single space or on a separate line.
Non Triggering Examples
func abc() -> Int {}func abc() -> [Int] {}func abc() -> (Int, Int) {}var abc = {(param: Int) -> Void in }func abc() ->
    Int {}func abc()
    -> Int {}Triggering Examples
func abc()↓->Int {}func abc()↓->[Int] {}func abc()↓->(Int, Int) {}func abc()↓-> Int {}func abc()↓ ->Int {}func abc()↓  ->  Int {}var abc = {(param: Int)↓ ->Bool in }var abc = {(param: Int)↓->Bool in }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| sorted_imports | Disabled | No | 
Imports should be sorted.
Non Triggering Examples
import AAA
import BBB
import CCC
import DDDTriggering Examples
import AAA
import ZZZ
import ↓BBB
import CCC| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| statement_position | Enabled | Yes | 
Else and catch should be on the same line, one space after the previous declaration.
Non Triggering Examples
} else if {} else {} catch {"}else{"struct A { let catchphrase: Int }
let a = A(
 catchphrase: 0
)struct A { let `catch`: Int }
let a = A(
 `catch`: 0
)Triggering Examples
↓}else if {↓}  else {↓}
catch {↓}
	  catch {| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| switch_case_on_newline | Disabled | No | 
Cases inside a switch should always be on a newline
Non Triggering Examples
case 1:
 return truedefault:
 return truecase let value:
 return true/*case 1: */return true//case 1:
 return truelet x = [caseKey: value]let x = [key: .default]if case let .someEnum(value) = aFunction([key: 2]) {guard case let .someEnum(value) = aFunction([key: 2]) {for case let .someEnum(value) = aFunction([key: 2]) {case .myCase: // error from networkcase let .myCase(value) where value > 10:
 return falseenum Environment {
 case development
}enum Environment {
 case development(url: URL)
}enum Environment {
 case development(url: URL) // staging
}case #selector(aFunction(_:)):
 return falseTriggering Examples
↓case 1: return true↓case let value: return true↓default: return true↓case "a string": return false↓case .myCase: return false // error from network↓case let .myCase(value) where value > 10: return false↓case #selector(aFunction(_:)): return false| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| syntactic_sugar | Enabled | No | 
Shorthand syntactic sugar should be used, i.e. [Int] instead of Array
Non Triggering Examples
let x: [Int]let x: [Int: String]let x: Int?func x(a: [Int], b: Int) -> [Int: Any]let x: Int!extension Array { 
 func x() { } 
 }extension Dictionary { 
 func x() { } 
 }let x: CustomArray<String>var currentIndex: Array<OnboardingPage>.Index?func x(a: [Int], b: Int) -> Array<Int>.IndexunsafeBitCast(nonOptionalT, to: Optional<T>.self)type is Optional<String>.TypeTriggering Examples
let x: ↓Array<String>let x: ↓Dictionary<Int, String>let x: ↓Optional<Int>let x: ↓ImplicitlyUnwrappedOptional<Int>func x(a: ↓Array<Int>, b: Int) -> [Int: Any]func x(a: [Int], b: Int) -> ↓Dictionary<Int, String>func x(a: ↓Array<Int>, b: Int) -> ↓Dictionary<Int, String>let x = ↓Array<String>.array(of: object)| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| todo | Enabled | No | 
TODOs and FIXMEs should be avoided.
Non Triggering Examples
// notaTODO:// notaFIXME:Triggering Examples
// ↓TODO:// ↓FIXME:// ↓TODO(note)// ↓FIXME(note)/* ↓FIXME: *//* ↓TODO: *//** ↓FIXME: *//** ↓TODO: */| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| trailing_comma | Enabled | No | 
Trailing commas in arrays and dictionaries should be avoided/enforced.
Non Triggering Examples
let foo = [1, 2, 3]let foo = []let foo = [:]let foo = [1: 2, 2: 3]let foo = [Void]()let example = [ 1,
 2
 // 3,
]Triggering Examples
let foo = [1, 2, 3↓,]let foo = [1, 2, 3↓, ]let foo = [1, 2, 3   ↓,]let foo = [1: 2, 2: 3↓, ]struct Bar {
 let foo = [1: 2, 2: 3↓, ]
}let foo = [1, 2, 3↓,] + [4, 5, 6↓,]let example = [ 1,
2↓,
 // 3,
]| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| trailing_newline | Enabled | Yes | 
Files should have a single trailing newline.
Non Triggering Examples
let a = 0Triggering Examples
let a = 0let a = 0
| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| trailing_semicolon | Enabled | Yes | 
Lines should not have trailing semicolons.
Non Triggering Examples
let a = 0Triggering Examples
let a = 0↓;let a = 0↓;
let b = 1let a = 0↓;;let a = 0↓;    ;;let a = 0↓; ; ;| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| trailing_whitespace | Enabled | Yes | 
Lines should not have trailing whitespace.
Non Triggering Examples
let name: String//// let name: String //let name: String // Triggering Examples
let name: String /* */ let name: String | Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| type_body_length | Enabled | No | 
Type bodies should not span too many lines.
Non Triggering Examples
class Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
}class Abc {
}class Abc {
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
}class Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
/* this is
a multiline comment
*/
}struct Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
}struct Abc {
}struct Abc {
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
}struct Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
/* this is
a multiline comment
*/
}enum Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
}enum Abc {
}enum Abc {
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
// this is a comment
}enum Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
/* this is
a multiline comment
*/
}Triggering Examples
↓class Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
}↓struct Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
}↓enum Abc {
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
let abc = 0
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| type_name | Enabled | No | 
Type name should only contain alphanumeric characters, start with an uppercase character and span between 3 and 40 characters in length.
Non Triggering Examples
class MyType {}private class _MyType {}class AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}struct MyType {}private struct _MyType {}struct AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}enum MyType {}private enum _MyType {}enum AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}typealias Foo = Voidprivate typealias Foo = Voidprotocol Foo {
 associatedtype Bar
 }protocol Foo {
 associatedtype Bar: Equatable
 }enum MyType {
case value
}Triggering Examples
↓class myType {}↓class _MyType {}private ↓class MyType_ {}↓class My {}↓class AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}↓struct myType {}↓struct _MyType {}private ↓struct MyType_ {}↓struct My {}↓struct AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}↓enum myType {}↓enum _MyType {}private ↓enum MyType_ {}↓enum My {}↓enum AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}typealias ↓X = Voidprivate typealias ↓Foo_Bar = Voidprivate typealias ↓foo = Voidtypealias ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = Voidprotocol Foo {
 associatedtype ↓X
 }protocol Foo {
 associatedtype ↓Foo_Bar: Equatable
 }protocol Foo {
 associatedtype ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| unused_closure_parameter | Enabled | Yes | 
Unused parameter in a closure should be replaced with _.
Non Triggering Examples
[1, 2].map { $0 + 1 }[1, 2].map({ $0 + 1 })[1, 2].map { number in
 number + 1 
}[1, 2].map { _ in
 3 
}[1, 2].something { number, idx in
 return number * idx
}let isEmpty = [1, 2].isEmpty()violations.sorted(by: { lhs, rhs in 
 return lhs.location > rhs.location
})rlmConfiguration.migrationBlock.map { rlmMigration in
return { migration, schemaVersion in
rlmMigration(migration.rlmMigration, schemaVersion)
}
}Triggering Examples
[1, 2].map { ↓number in
 return 3
}[1, 2].map { ↓number in
 return numberWithSuffix
}[1, 2].map { ↓number in
 return 3 // number
}[1, 2].map { ↓number in
 return 3 "number"
}[1, 2].something { number, ↓idx in
 return number
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| unused_enumerated | Enabled | No | 
When the index is not used, .enumerated() can be removed.
Non Triggering Examples
for (idx, foo) in bar.enumerated() { }for (_, foo) in bar.enumerated().something() { }for (_, foo) in bar.something() { }for foo in bar.enumerated() { }for foo in bar { }for (idx, _) in bar.enumerated() { }Triggering Examples
for (↓_, foo) in bar.enumerated() { }for (↓_, foo) in abc.bar.enumerated() { }for (↓_, foo) in abc.something().enumerated() { }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| valid_docs | Enabled | No | 
Documented declarations should be valid.
Non Triggering Examples
/// docs
public func a() {}/// docs
/// - parameter param: this is void
public func a(param: Void) {}/// docs
/// - parameter label: this is void
public func a(label param: Void) {}/// docs
/// - parameter param: this is void
public func a(label param: Void) {}/// docs
/// - Parameter param: this is void
public func a(label param: Void) {}/// docs
/// - returns: false
public func no() -> Bool { return false }/// docs
/// - Returns: false
public func no() -> Bool { return false }/// Returns false
public func no() -> Bool { return false }/// Returns false
var no: Bool { return false }/// docs
var no: Bool { return false }/// docs
/// - throws: NSError
func a() throws {}/// docs
/// - Throws: NSError
func a() throws {}/// docs
/// - parameter param: this is void
/// - returns: false
public func no(param: (Void -> Void)?) -> Bool { return false }/// docs
/// - parameter param: this is void
///- parameter param2: this is void too
/// - returns: falsepublic func no(param: (Void -> Void)?, param2: String->Void) -> Bool {return false}/// docs
/// - parameter param: this is void
public func no(param: (Void -> Void)?) {}/// docs
/// - parameter param: this is void
///- parameter param2: this is void too
public func no(param: (Void -> Void)?, param2: String->Void) {}/// docs👨👩👧👧
/// - returns: false
public func no() -> Bool { return false }/// docs
/// - returns: tuple
public func no() -> (Int, Int) {return (1, 2)}/// docs
/// - returns: closure
public func no() -> (Void->Void) {}/// docs
/// - parameter param: this is void
/// - parameter param2: this is void too
func no(param: (Void) -> Void, onError param2: ((NSError) -> Void)? = nil) {}/// docs
/// - parameter param: this is a void closure
/// - parameter param2: this is a void closure too
/// - parameter param3: this is a void closure too
func a(param: () -> Void, param2: (parameter: Int) -> Void, param3: (parameter: Int) -> Void) {}/// docs
/// - parameter param: this is a void closure
/// - Parameter param2: this is a void closure too
/// - Parameter param3: this is a void closure too
func a(param: () -> Void, param2: (parameter: Int) -> Void, param3: (parameter: Int) -> Void) {}/// docs
/// - parameter param: this is a void closure
/// - returns: Foo<Void>
func a(param: () -> Void) -> Foo<Void> {return Foo<Void>}/// docs
/// - parameter param: this is a void closure
/// - returns: Foo<Void>
func a(param: () -> Void) -> Foo<[Int]> {return Foo<[Int]>}/// docs
/// - throws: NSError
/// - returns: false
func a() throws -> Bool { return true }/// docs
/// - parameter param: this is a closure
/// - returns: Bool
func a(param: (Void throws -> Bool)) -> Bool { return true }Triggering Examples
/// docs
public ↓func a(param: Void) {}/// docs
/// - parameter invalid: this is void
public ↓func a(param: Void) {}/// docs
/// - parameter invalid: this is void
public ↓func a(label param: Void) {}/// docs
/// - parameter invalid: this is void
public ↓func a() {}/// docs
public ↓func no() -> Bool { return false }/// Returns false
public ↓func a() {}/// docs
/// - throws: NSError
↓func a() {}/// docs
↓func a() throws {}/// docs
/// - parameter param: this is void
public ↓func no(param: (Void -> Void)?) -> Bool { return false }/// docs
/// - parameter param: this is void
///- parameter param2: this is void too
public ↓func no(param: (Void -> Void)?, param2: String->Void) -> Bool {return false}/// docs
/// - parameter param: this is void
/// - returns: false
public ↓func no(param: (Void -> Void)?) {}/// docs
/// - parameter param: this is void
///- parameter param2: this is void too
/// - returns: false
public ↓func no(param: (Void -> Void)?, param2: String->Void) {}/// docs
public func no() -> (Int, Int) {return (1, 2)}/// docs
/// - parameter param: this is void
///- parameter param2: this is void too
///- returns: closure
func no(param: (Void) -> Void, onError param2: ((NSError) -> Void)? = nil) {}/// docs
/// - parameter param: this is a void closure
func a(param: () -> Void) -> Foo<Void> {return Foo<Void>}/// docs
/// - parameter param: this is a void closure
func a(param: () -> Void) -> Foo<[Int]> {return Foo<[Int]>}/// docs
func a() throws -> Bool { return true }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| valid_ibinspectable | Enabled | No | 
@IBInspectable should be applied to variables only, have its type explicit and be of a supported type
Non Triggering Examples
class Foo {
  @IBInspectable private var x: Int
}class Foo {
  @IBInspectable private var x: String?
}class Foo {
  @IBInspectable private var x: String!
}class Foo {
  @IBInspectable private var count: Int = 0
}class Foo {
  private var notInspectable = 0
}class Foo {
  private let notInspectable: Int
}Triggering Examples
class Foo {
  @IBInspectable private ↓let count: Int
}class Foo {
  @IBInspectable private ↓var insets: UIEdgeInsets
}class Foo {
  @IBInspectable private ↓var count = 0
}class Foo {
  @IBInspectable private ↓var count: Int?
}class Foo {
  @IBInspectable private ↓var count: Int!
}class Foo {
  @IBInspectable private ↓var x: ImplicitlyUnwrappedOptional<Int>
}class Foo {
  @IBInspectable private ↓var count: Optional<Int>
}class Foo {
  @IBInspectable private ↓var x: Optional<String>
}class Foo {
  @IBInspectable private ↓var x: ImplicitlyUnwrappedOptional<String>
}| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| variable_name | Enabled | No | 
Variable names should only contain alphanumeric characters and start with a lowercase character or should only contain capital letters. In an exception to the above, variable names may start with a capital letter when they are declared static and immutable. Variable names should not be too long or too short.
Non Triggering Examples
let myLet = 0var myVar = 0private let _myLet = 0class Abc { static let MyLet = 0 }let URL: NSURL? = nillet XMLString: String? = nilTriggering Examples
↓let MyLet = 0↓let _myLet = 0private ↓let myLet_ = 0↓let myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0↓var myExtremelyVeryVeryVeryVeryVeryVeryLongVar = 0private ↓let _myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0↓let i = 0↓var id = 0private ↓let _i = 0| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| vertical_parameter_alignment | Enabled | No | 
Function parameters should be aligned vertically if they're in multiple lines in a declaration.
Non Triggering Examples
func validateFunction(_ file: File, kind: SwiftDeclarationKind,
                      dictionary: [String: SourceKitRepresentable]) { }func validateFunction(_ file: File, kind: SwiftDeclarationKind,
                      dictionary: [String: SourceKitRepresentable]) -> [StyleViolation]func foo(bar: Int)func foo(bar: Int) -> String func validateFunction(_ file: File, kind: SwiftDeclarationKind,
                      dictionary: [String: SourceKitRepresentable])
                      -> [StyleViolation]func validateFunction(
   _ file: File, kind: SwiftDeclarationKind,
   dictionary: [String: SourceKitRepresentable]) -> [StyleViolation]func validateFunction(
   _ file: File, kind: SwiftDeclarationKind,
   dictionary: [String: SourceKitRepresentable]
) -> [StyleViolation]Triggering Examples
func validateFunction(_ file: File, kind: SwiftDeclarationKind,
                  ↓dictionary: [String: SourceKitRepresentable]) { }func validateFunction(_ file: File, kind: SwiftDeclarationKind,
                       ↓dictionary: [String: SourceKitRepresentable]) { }func validateFunction(_ file: File,
                  ↓kind: SwiftDeclarationKind,
                  ↓dictionary: [String: SourceKitRepresentable]) { }| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| vertical_whitespace | Enabled | Yes | 
Limit vertical whitespace to a single empty line.
Non Triggering Examples
let abc = 0let abc = 0
/* bcs 
*/// bca 
Triggering Examples
let aaaa = 0
struct AAAA {}
class BBBB {}
| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| void_return | Enabled | Yes | 
Prefer -> Void over -> ().
Non Triggering Examples
let abc: () -> Void = {}func foo(completion: () -> Void)let foo: (ConfigurationTests) -> () throws -> Void)let foo: (ConfigurationTests) ->   () throws -> Void)let foo: (ConfigurationTests) ->() throws -> Void)let foo: (ConfigurationTests) -> () -> Void)Triggering Examples
let abc: () -> ↓() = {}func foo(completion: () -> ↓())func foo(completion: () -> ↓(   ))let foo: (ConfigurationTests) -> () throws -> ↓())| Identifier | Enabled by default | Supports autocorrection | 
|---|---|---|
| weak_delegate | Enabled | No | 
Delegates should be weak to avoid reference cycles.
Non Triggering Examples
class Foo {
  weak var delegate: SomeProtocol?
}class Foo {
  weak var someDelegate: SomeDelegateProtocol?
}class Foo {
  weak var delegateScroll: ScrollDelegate?
}class Foo {
  var scrollHandler: ScrollDelegate?
}func foo() {
  var delegate: SomeDelegate
}class Foo {
  var delegateNotified: Bool?
}protocol P {
 var delegate: AnyObject? { get set }
}class Foo {
 protocol P {
 var delegate: AnyObject? { get set }
}
}class Foo {
 var computedDelegate: ComputedDelegate {
 return bar() 
} 
}Triggering Examples
class Foo {
  ↓var delegate: SomeProtocol?
}class Foo {
  ↓var scrollDelegate: ScrollDelegate?
}