tscop

TypeScript StypeCop.

npm install tscop
4 downloads in the last week
18 downloads in the last month

Leiningen logo

TS-StyleCop

NPM version Build Status

TS-StyleCop provides value by enforcing a common set of style rules for TypeScript code. TS-StyleCop intend to be a single, consistent set of rules. Developers also will be able to implement their own rules.

Based on C# StyleCop.

UNDER CONSTRUCTION

Install

npm install -g tscop

Usage

tscop hello.ts

Example

  1. Having the following file (test.ts):
var Myvar = 1;

class class1 { }

class class2 { }

class anotherClass {

    public MyMethodName(): string{
        return null;
    }
}

class Class3 { }
  1. Executing TS-StypeCop to this file:

     tscop test.ts
    
  2. The command output will be:

Suppressing rules

To suppress a rule you need to put a line comment with the following syntax:

// SuppressMessage -> SA1300:ElementMustBeginWithUpperCaseLetter

With this the TS-StyleCop will ignore this rule validation to the first element after this comment. Example:

// SuppressMessage -> SA1300:ElementMustBeginWithUpperCaseLetter
class className1 { 
    public Methid(){
        //...
    }
}
// test...
class className2 { }

The output will be:

  #1 [SA1301] Element must begin with lower case letter
         public Methid(){ // Line 3, Pos 12
                ^^^^^^

  #2 [SA1300] Element must begin with upper case letter
     class className2 { } // Line 8, Pos 7
           ^^^^^^^^^^


 [!] Failed - 2 violations found.

NOTE: The className1 validation was ignored

Build

  1. Install Node if you haven't already (http://nodejs.org/)
  2. At the root folder run npm install
  3. Install grunt cli (http://gruntjs.com/). To do this, run npm install -g grunt-cli
  4. At the root folder run grunt

TS-StyleCop rules

The implemented rules until now are:

  • Naming Rules (SA13*) Rules which enforce naming requirements for members, types, and variables.
    • SA1300: The name of a TypeScript element does not begin with an upper-case letter.
    • SA1301: The name of a TypeScript element does not begin with an lower-case letter.

I'm working on porting and adapt all this rules: http://www.stylecop.com/docs/StyleCop%20Rules.html

Roadmap

  • Add unit tests
  • Improving the interface to create rules
  • IMplement a set of rules
  • Refactor the code
  • Create a VisualStudio plugin
  • ...

Creating a custom rule

Pending...

npm loves you