Skip to content
/ Taylor Public

Measure Swift code metrics and get reports in Xcode, Jenkins and other CI platforms.

License

Notifications You must be signed in to change notification settings

yopeso/Taylor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1800c12 · Jun 11, 2019
Nov 26, 2015
Sep 18, 2017
Dec 29, 2015
Sep 18, 2017
Sep 18, 2017
Mar 20, 2019
Sep 18, 2017
Dec 29, 2016
Nov 21, 2016
Feb 5, 2016
Jun 30, 2017
Jan 21, 2016
Sep 18, 2017
Nov 30, 2015
Sep 18, 2017
Jun 30, 2017
Sep 18, 2017
Nov 11, 2015
Apr 13, 2016
Jun 11, 2019
Nov 25, 2016
Feb 5, 2016
Nov 25, 2016

Repository files navigation

Taylor

⚠️ Taylor is DEPRECATED. Use SwiftLint instead.

A tool aimed to increase Swift code quality, by checking for conformance to code metrics.

Build Status codecov.io Release version Swift Code Platform License

Taylor uses SourceKitten to a more accurate AST representation and generates the final report in either Xcode, JSON, PMD or plain text formats.

Installation

Homebrew (recommended)

You need to have Homebrew installed.

brew update
brew install taylor

Source

Rebuild dependencies by running carthage bootstrap --platform Mac (Carthage required)
Clone the project and run make install (latest version of Xcode required).

Package

Download the latest release and run:

Taylor.app/Contents/Resources/install

Usage

Xcode

To get warnings displayed in the IDE add a new Run Script Phase with:

if which taylor >/dev/null; then
  taylor -p ${PROJECT_DIR} -r xcode
else
  echo "Taylor not installed"
fi

Command line

To use Taylor from command line run it as follows:

taylor [option1 [option1_argument]] [option2 option2_argument] […]

Available options
taylor Description
-h/--help Print help.
-v/--version Print Taylor version.
-p/--path path Path to the folder to be analysed (current folder by default).
-e/--exclude file Path to either directory or file to be excluded from analysis.
-ef/--excludeFile file Path to exclude file in .yml format.
-f/--file file File to be included in analysis (may be from an external source).
-t/--type type Type of files to be analysed.
-vl/--verbosityLevel level Verbosity level for output messages (info, warning and error).
-r/--reporter type:name Type of final report (json, xcode, pmd or plain text) and filename.
-rc/--ruleCustomization rule=value Customize rules by giving custom values. See help for more details.

taylor alone with no arguments analyses .swift files inside current folder.

Excludes

If you want to exclude some files or folders from checking create a new .yml file and call Taylor with -ef /path/to/file argument.
Default filename is excludes.yml and its default location is the folder specified by --path flag.
The following excluding name formats can be specified:

- "/path/to/file"
- "file"
- "Folder"
- "Folder/*"
- ".*Tests.*"

Rules

These are the code quality rules currently existing:

Excessive Class Length

Number of lines in a class must not exceed given limit. Default limit = 400 lines.
Example: taylor -rc ExcessiveClassLength=100.

Excessive Method Length

Number of lines in a method must not exceed given limit. Default limit = 20 lines.
Example: taylor -rc ExcessiveMethodLength=10.

Too Many Methods

Number of methods in a class must not exceed given limit. Default limit = 10 methods.
Example: taylor -rc TooManyMethods=7.

Cyclomatic Complexity

Cyclomatic Complexity number of a method must not exceed maximal admitted value. Default = 5.
Example: taylor -rc CyclomaticComplexity=10.

Nested Block Depth

Block Depth of a method must not exceed maximal admitted value. Default = 3.
Example: taylor -rc NestedBlockDepth=7.

N-Path Complexity

N-Path Complexity of a method must not exceed maximal admitted value. Default = 100.
Example: taylor -rc NPathComplexity=50.

Excessive Parameter List

Number of parameters given to a method must not exceed maximal admitted value. Default = 3.
Example: taylor -rc ExcessiveParameterList=5.

Credits

Thanks to JP Simard for developing SourceKitten.

License

MIT Licensed.