Git Product home page Git Product logo

taylor's Introduction

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 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.

taylor's People

Contributors

alexbantiuc avatar mihai8804858 avatar s2dentik avatar thelvis4 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.