A set of TSLint rules used to enforce Clean Code practices. Inspired by Clean Code: A Handbook of Agile Software Craftsmanship.
ð Sign up for CodePass, the Quickest Way To Solve Your Coding Errors! ð¥
InstallationConfiguration Configurenpm install tslint-clean-code
tslint.json
In your tslint.json
file, extend this package. For example:
{
  "extends": [
    "tslint-clean-code"
  ],
  "rules": {
    "newspaper-order": true
  }
}
You can also extend other tslint config packages to combine this plugin with other community custom rules.
Configure your Grunt build taskAdd the new rulesDirectory to your tslint task:
grunt.initConfig({
tslint: {
options: {
rulesDirectory: 'node_modules/tslint-clean-code/dist/src',
configuration: grunt.file.readJSON("tslint.json")
},
files: {
src: ['src/file1.ts', 'src/file2.ts']
}
}
})
The tslint.json file does not change format when using this package. Just add our rule definitions to your existing tslint.json file.
Supported Rules Rule Name Description Sinceid-length
Enforces a minimum and/or maximum identifier length convention. 0.1.0 try-catch-first
Try-catch blocks must be first within the scope. Try-catch blocks are transactions and should leave your program in a consistent state, no matter what happens in the try. 0.1.0 max-func-args
Limit the number of input arguments for a function. The ideal number of arguments for a function is zero (niladic). 0.1.0 min-class-cohesion
The more variables a method manipulates the more cohesive that method is to its class. A class in which each variable is used by each method is maximally cohesive. We would like cohesion to be high. When cohesion is high, it means that the methods and variables of the class are co-dependent and hang together as a logical whole. 0.1.0 newspaper-order
We would like a source file to be like a newspaper article. Detail should increase as we move downward, until at the end we find the lowest level functions and details in the source file. 0.1.0 no-flag-args
Functions should only do one thing, therefore passing a boolean into a function is a bad practice. The function does one thing if the flag is true and another if the flag is false! 0.1.0 no-for-each-push
Enforce using Array.prototype.map
instead of Array.prototype.forEach
and Array.prototype.push
. 0.1.0 no-feature-envy
A method accesses the data of another object more than its own data. 0.1.8 no-map-without-usage
Ensure results of Array.prototype.map
is either assigned to variable or returned 0.1.0 no-complex-conditionals
Enforce the maximum complexity of conditional expressions. 0.1.0 prefer-dry-conditionals
Don't-Repeat-Yourself in if statement conditionals, instead use Switch statements. 0.1.0 no-commented-out-code
Code must not be commented out. 0.2.0 Development
To develop tslint-clean-code simply clone the repository, install dependencies and run grunt:
git clone git@github.com:Glavin001/tslint-clean-code.git --config core.autocrlf=input --config core.eol=lf
cd tslint-clean-code
npm install
grunt all
grunt create-rule --rule-name=no-something-or-other
Debug code
If command fails because of file access permissions, prefix it with sudo.
npm install -g node-inspector
Then run:
node-debug grunt mochaTest
The node-debug
command will load Node Inspector in your default browser (works in Chrome and Opera only).
Set a breakpoint somewhere in your code and resume execution. Your breakpoint should be hit.
Thank youThank you to maintainers of tslint-microsoft-contrib, from which this repository was forked. The initial structure was kept and new rules were added, this would not have been possible without Microsoft's awesome work!
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4