-
Notifications
You must be signed in to change notification settings - Fork 48
Home
Tailor supports Swift 2 out of the box and helps enforce style guidelines outlined in the The Swift Programming Language, GitHub, Ray Wenderlich, Jamie Forrest, and Coursera style guides. It supports cross-platform usage and can be run on Windows and Linux.
Requires Java (JRE or JDK) Version 8 or above: Java SE Downloads
Mac OS X (10.10+), Linux (Ubuntu, etc.)
curl -fsSL http://tailor.sh/install.sh | sh
Windows (10+)
iex (new-object net.webclient).downloadstring('http://tailor.sh/install.ps1')
You may also download Tailor via GitHub Releases, then unzip, and symlink the tailor/bin/tailor
shell script to a location in your $PATH
.
Run Tailor with a list of files and directories to analyze, or via Xcode.
$ tailor [options] [--] [[file|directory] ...]
Help for Tailor is accessible via the [-h|--help]
option.
$ tailor -h
Usage: tailor [options] [--] [[file|directory] ...]
Perform static analysis on Swift source files.
Invoking Tailor with at least one file or directory will analyze all Swift files at those paths. If
no paths are provided, Tailor will analyze all Swift files found in '$SRCROOT' (if defined), which
is set by Xcode when run in a Build Phase. Tailor may be set up as an Xcode Build Phase
automatically with the --xcode option.
Options:
--debug print ANTLR error messages when parsing error occurs
--except=<rule1,rule2,...> run all rules except the specified ones
-h,--help display help
--invert-color invert colorized console output
-l,--max-line-length=<0-999> maximum Line length (in characters)
--max-class-length=<0-999> maximum Class length (in lines)
--max-closure-length=<0-999> maximum Closure length (in lines)
--max-file-length=<0-999> maximum File length (in lines)
--max-function-length=<0-999> maximum Function length (in lines)
--max-name-length=<0-999> maximum Identifier name length (in characters)
--max-severity=<error|warning (default)> maximum severity
--max-struct-length=<0-999> maximum Struct length (in lines)
--no-color disable colorized console output
--only=<rule1,rule2,...> run only the specified rules
--show-rules show description for each rule
-v,--version display version
--xcode=<path/to/project.xcodeproj> add Tailor Build Phase Run Script to Xcode Project
- Rules
- Cross-Platform
- Automatic Xcode Integration
- Colourized Output
- Warnings, Errors, and Failing the Build
- Disable Violations within Source Code
Tailor may be used on Mac OS X via your shell or integrated with Xcode, as well as on Windows and Linux. Great news for when the Swift compiler comes to Linux later this year!
Tailor can be integrated with Xcode projects using the --xcode
option.
tailor --xcode /path/to/demo.xcodeproj/
This adds the following Build Phase Run Script to your project's default target.
Tailor uses the following colour schemes to format CLI output:
- Dark theme (enabled by default)
--max-severity
can be used to control the maximum severity of violation messages. It can be set to error
or warning
(by default, it is set to warning
). Setting it to error
allows you to distinguish between lower and higher priority messages. It also fails the build in Xcode, if any errors are reported (similar to how a compiler error fails the build in Xcode). With max-severity
set to warning
, all violation messages are warnings and the Xcode build will never fail.
This setting also affects Tailor's exit code on the command-line, a failing build will exit 1
whereas having warnings only will exit 0
, allowing Tailor to be easily integrated into pre-commit hooks.
Violations on a specific line may be disabled with a trailing single-line comment.
import Foundation; // tailor:disable
Please review the guidelines for contributing to this repository.
- Java Version 8
-
Gradle (optional,
./gradlew
may be used instead)
Tool | License |
---|---|
ANTLR 4.5 | The BSD License |
Apache Commons CLI | Apache License, Version 2.0 |
Jansi | Apache License, Version 2.0 |
Xcodeproj | MIT |
Tailor is released under the MIT license. See LICENSE.md for details.
Questions or need help? Get in touch via email or open an Issue!