SwiftLint: Writing good quality code in Swift

Needone App
3 min readOct 16, 2020

--

SwiftLint is a programming guide tool which can automatically check the code quality with certain rules such as https://github.com/github/swift-style-guide. The article will cover:

  • How to install and configure SwiftLint
  • How to use SwiftLint
  • Customise SwiftLint rules

SwiftLint Installation

There are two ways of installations that we can either install SwiftLint globally or per project.

Install SwiftLint globally

// install brew, if you have installed brew already, skip this step
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

// install swiftlint
brew install swiftlint

The output:

Install SwiftLint per project

If the SwiftLint was installed globally, open the Xcode project, select target and go to Build Phases:

Then click the + button as in the above screenshot to add a new Run Script Phase:

Add the following script:

if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

Here if you installed the SwiftLint via cocoapod, replace the above script with:

"${PODS_ROOT}/SwiftLint/swiftlint"

How to use SwiftLint

If you have installed and integrated the SwiftLint to your project already, in Xcode, simply command+b:

That is it! 🥳

There are 999+ warnings and 999+ errors. 😂😂😂

The reason might be the some of the SwiftLint rules might not suitable for your project, so you can customize the rules yourself.

Integrate with Git

With the support from git, we can use SwiftLint to check our submitted code every time when we are doing a git commit, and here is how:

Find the file pre-commit under the root directory of our project, /.git/hook and replace it with the following:

By doing above, any violation of the SwiftLint rules can’t be committed until we fix it.

Customize SwiftLint rules

Go to the project root directory, create a new file named .swiftlint.yml. Be care this is a hidden file you might not be able to find it in your Finder. Here is an example:

disabled_rules: rules you don’t want to apply in your project. For more rule names and meanings, have a look at here: https://realm.github.io/SwiftLint/rule-directory.html

opt_in_rules: rules you want to apply in your project.

included: directories that you want to include.

excluded: directories that you don’t want to apply SwiftLint rules, higher priority than included

line_length: how many characters are allowed in one line. >200 gives error warning, >250 gives out error.

Custom rules

Besides above rules, we can also add some custom rules in the .swiftlint.yml, for example, only allows one space after the ,:

custom_rules:
comma_space_rule:
message: "Expected only one space after ',"
severity: warning
regex: ",[ ]{2,}"

After the customization, finally we get rid of 999+ warnings and 999+ errors.

Warnings

Please always remember to keep a copy of your files or backup before running:

Swiftlint autocorrect.

Conclusion

We can either install the SwiftLint by project or globally. By the help of git, it is easily to check each of the commit to ensure the quality of the code, and of course we can customised the rules to fit in our project.

Reference

https://needone.app/swiftlint/

Originally published at https://needone.app on October 16, 2020.

--

--

No responses yet