concept SwiftLint in category swift

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"
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.