Taylor 0 travis-ci

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

Taylor

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](”http://phpmd.org/rules/codesize.html#excessiveclasslength”) must not exceed given limit. Default limit = 400 lines.
Example: taylor -rc ExcessiveClassLength=100.

Excessive Method Length

[Number of lines in a method](”http://phpmd.org/rules/codesize.html#excessivemethodlength”) must not exceed given limit. Default limit = 20 lines.
Example: taylor -rc ExcessiveMethodLength=10.

Too Many Methods

[Number of methods in a class](”http://phpmd.org/rules/codesize.html#toomanymethods”) 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.

Related Repositories

Taylor

Taylor

A lightweight library for writing HTTP web servers with Swift ...

taylor

taylor

Swift on bare metal ...

Taylor

Taylor

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

dotfiles

dotfiles

python and javascript tmux, vim and zsh configuration inspired by the great jarrod taylor ...

taylor.swift

taylor.swift

Taylor series expansion in Swift ...


Top Contributors

thelvis4 S2dentik mihai8804858 simionschiopu lexorus bantiuc

Releases

-   0.1.3 zip tar
-   0.1.2 zip tar
-   0.1.1 zip tar
-   0.1.0 zip tar