Swift lint

Notes on swift lint


  1. install swift-lint via swiftlint.pkg (give access in prefs/security): https://github.com/realm/SwiftLint/releases

  2. Add .swiftlint.yml to your xcode project folder. (asjecent to the .xproj file)
  3. Add swift-lint script to your xcodeproject:
    • XCode 👉 Build phases
    • Click “plus-button” 👉 Add run script
    • Paste in the bellow:
if which swiftlint >/dev/null; then
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
  1. Disable script sandboxing here: Build Setting -> Build Options -> User Script Sandboxing,Set "No" or you will get an error. ref: https://github.com/mac-cain13/R.swift/issues/855

  2. Build cmd + b the project to see some swift-lint warnings

  3. Add a swift-lint badge to your github project:
    SwiftLint Eonist
    [![Swift-lint Eonist](https://img.shields.io/badge/swift--lint-eonist-purple.svg)](https://github.com/eonist/Swift-lint)

  4. ✨ Don’t forget the terminal auto correct feature Terminal: swiftlint autocorrect now renamed to: swiftlint fix in your project path. And it auto corrects the entire project ✨ ⚠️️Remember to commit before you auto correct the project. swiftlint lint first to assert what will be changed. Before autocorrecting it can be smart to commit current state. and go through commits and assert that everything is good. It can also be a good idea to make sure the package or xcodeproj builds and runs all tests etc


you can ignore or disable swift lint inline (copy the arg name like: empty_enum_arguments fro the warning):

// swiftlint:disable empty_enum_arguments
(100,         30, 3),
(10000,       30, 333),
(1000000,     30, 33333),
(100000000,   60, 1666666),
(10000000000, 90, 111111111),
// swiftlint:enable empty_enum_arguments

// swiftlint:disable empty_enum_arguments
// swiftlint:enable empty_enum_arguments

// swiftlint:disable all
// swiftlint:enable all

Exclude folders from linting:

- Pods
- UnitTests/generated/GeneratedMocks.swift

Add swift lint to Packages


Terminal commands

swiftlint autocorrect // apply lint corrections
swiftlint lint // shows lint errors

swift style guides: