concept SwiftLint in category swift

appears as: SwiftLint
Swift in Depth

This is an excerpt from Manning's book Swift in Depth.

Realm offers a great tool called SwiftLint (https://github.com/realm/SwiftLint) to fulfill this linting role. You can use SwiftLint to enforce style guidelines that you configure. By default, it uses guidelines determined by the Swift community (https://github.com/github/swift-style-guide).

For example, the code in figure 14.5 violates some rules, such as force unwrapping and empty whitespace. SwiftLint lets you know via warnings and errors. You can consider SwiftLint to be a compiler extension.

Next, you’d probably like to configure SwiftLint to your liking. The configuration file is a yml—or yaml—file called .swiftlint.yml. This yaml file contains the rules you can enable and disable for your project.

Listing 14.5. SwiftLint configuration file
disabled_rules: # rule identifiers to exclude from running
  - variable_name
  - nesting
  - function_parameter_count
opt_in_rules: # some rules are only opt-in
  - control_statement
  - empty_count
  - trailing_newline
  - colon
  - comma
included: # paths to include during linting. `--path` is ignored if present.
  - Project
  - ProjectTests
  - ProjectUITests
excluded: # paths to ignore during linting. Takes precedence over `included`.
  - Pods
  - Project/R.generated.swift

# configurable rules can be customized from this configuration file
# binary rules can set their severity level
force_cast: warning # implicitly. Give warning only for force casting

force_try:
  severity: warning # explicitly. Give warning only for force try
type_body_length:
  - 300 # warning
  - 400 # error

# or they can set both explicitly
file_length:
  warning: 500
  error: 800

large_tuple: # warn user when using 3 values in tuple, give error if there
 are 4
    - 3
    - 4

# naming rules can set warnings/errors for min_length and max_length
# additionally they can set excluded names
type_name:
  min_length: 4 # only warning

    error: 35
  excluded: iPhone # excluded via string
reporter: "xcode"

Alternatively, you can check all the rules that SwiftLint offers via the swiftlint rules command.

SwiftLint is a command-line tool you can run with swiftlint. But chances are you’re using Xcode. You’ll configure it so that SwiftLint works there, too.

sitemap

Unable to load book!

The book could not be loaded.

(try again in a couple of minutes)

manning.com homepage
test yourself with a liveTest