Optional Data -> String Conversion

Prefer failable String(bytes:encoding:) initializer when converting Data to String

  • Identifier: optional_data_string_conversion
  • Enabled by default: Yes
  • Supports autocorrection: No
  • Kind: lint
  • Analyzer rule: No
  • Minimum Swift compiler version: 5.0.0
  • Default configuration:
    KeyValue
    severity warning
    allow_implicit_init false

Non Triggering Examples

String(data: data, encoding: .utf8)
String(bytes: data, encoding: .utf8)
String(UTF8.self)
String(a, b, c, UTF8.self)
String(decoding: data, encoding: UTF8.self)
String(data: data, encoding: .ascii)
String(bytes: data, encoding: .utf16LittleEndian)
String(decoding: data, as: UTF16.self)
String.init(bytes: data, encoding: .utf8)
let text: String = .init(bytes: data, encoding: .utf8)
let text: String = .init(data)
let text: Int = .init(decoding: data, as: UTF8.self)
let n: Int = .init(0)
String(repeating: "a", count: 3)
String(format: "%d", 3)
let text = .init(decoding: data, as: UTF8.self)

Triggering Examples

String(decoding: data, as: UTF8.self)
String.init(decoding: data, as: UTF8.self)
let text: String = .init(decoding: data, as: UTF8.self)
//
// allow_implicit_init: true
//

let text = .init(decoding: data, as: UTF8.self)

//
// allow_implicit_init: true
//

f(.init(decoding: data, as: UTF8.self))