How to start working with swift-format and swiftlint.
1. swift-format
1.1 Gets swift-format
swift-format is hosted on apple/swift-format, build executable by following the README
VERSION=0.50700.0 # replace this with the version you need
git clone https://github.com/apple/swift-format.git
cd swift-format
git checkout "tags/$VERSION"
swift build -c release
the swift-format
executable will be located at .build/release/swift-format
.
1.2 Place swift-format executable to global path
# Place swift-format executable to the global path
ln -s /path/to/your/binary/swift-format /usr/local/bin/swift-format
1.3 Adds configuration file
Adds configuration file .swift-format
to customize the rules from the project root dir. Refer to Configuration.
{
"indentation" : {
"spaces" : 2
}
}
1.4 Xcode Usage
Add a new Run Script
to the Build Phases
section
if which swift-format >/dev/null; then
swift-format format -i -r --configuration ${PROJECT_DIR}/.swift-format ${PROJECT_DIR}
else
echo "warning: swift-format not installed"
fi
2. swiftlint
2.1 Gets swiftlint
swiftlint is hosted on realm/SwiftLint, install it by following the README
# I prefer to use homebrew
brew install swiftlint
2.2 Xcode Usage
Add a new Run Script
to the Build Phases
section
if which swiftlint > /dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed
fi
3. Troubleshotting
When using swift-format
and swiftlint
at the same time, some rules may conflict. So you can disable some swiftlint
rules to avoid warnings.
Adds file .swiftlint.yml
from the directory you’ll run SwiftLint from. Then you can configure it by following this guideline
# By default, SwiftLint uses a set of sensible default rules you can adjust:
disabled_rules: # rule identifiers turned on by default to exclude from running
- trailing_comma # against swift-format
- opening_brace # against swift-format