Static Over Final Class

Prefer static over final class for non-overridable declarations

  • Identifier: static_over_final_class
  • Enabled by default: Yes
  • Supports autocorrection: No
  • Kind: idiomatic
  • Analyzer rule: No
  • Minimum Swift compiler version: 5.0.0
  • Default configuration:
    KeyValue
    severity warning

Non Triggering Examples

class C {
    static func f() {}
}
class C {
    static var i: Int { 0 }
}
class C {
    static subscript(_: Int) -> Int { 0 }
}
class C {
    class func f() {}
}
final class C {}
final class C {
    class D {
      class func f() {}
    }
}

Triggering Examples

class C {
    final class func f() {}
}
class C {
    final class var i: Int { 0 }
}
class C {
    final class subscript(_: Int) -> Int { 0 }
}
final class C {
    class func f() {}
}
class C {
    final class D {
        class func f() {}
    }
}