Giter Club home page Giter Club logo

tslint-auto-disable's Introduction

tslint-auto-disable

tslint-auto-disable is a command line tool that automatically inserts a comment // tslint:disable-next-line before lines failing to comply with tslint rules.

Motivation

TSLint is a fantastic static analysis tool which offers a wide range of linting rules to make code cleaner, safer and to avoid potential bugs.

Unfortunately, adopting TSLint initially or adopting new rules in an existing code base of significant size can be a lot of work as it means that either all errors have to be fixed right a way or that the severity level has to be lowered to warning. This prevents the new rules from being enforced for new code.

This is where tslint-auto-disable comes in: When adopting TSLint or adopting new rules, one can run tslint-auto-disable once to insert disable comments above the offending lines. This makes the code base pass the linting step, meaning that linting rules can be enforced immediately for new code. Existing code which does not comply with the rules will be littered with disable comments, these can be cleaned up over time.

Installation and Usage

tslint-auto-disable can be installed from npm:

$ npm install tslint-auto-disable

To use it, the tsconfig.json and tslint.json files must be specified:

$ npx tslint-auto-disable -p tsconfig.json -c tslint.json

Warning: tslint-auto-disable is realtively early stage and while it has been used successfully on a few code bases and has a test suite indicating it should work as intended, it does rewrite your source files, so you probably want to have things committed / backed up before running it.

tslint-auto-disable's People

Contributors

dependabot[bot] avatar paulkoerbitz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tslint-auto-disable's Issues

Cannot find module '../dist/src/index'

It seems that tslint-auto-disable npm package doesn't contain built js files.

Steps to reproduce

  1. npx tslint-auto-disable -p tsconfig.json -c tslint.json

Expected
The tslint:disable-next-line comments are added.

Actual

npx: installed 42 in 17.046s
Cannot find module '../dist/src/index'

Environment

  • WSL (windows subsystem for linux), Ubuntu, Linux ********* 4.4.0-17763-Microsoft #55-Microsoft Sat Oct 06 18:05:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux
  • node -v: v8.9.4
  • npm -v: 5.6.0
  • "typescript": "^3.1.6"
  • "tslint": "^5.11.0"

Check and replace previous disable comment

Currently, when tslint-auto-disable is re-run it would insert another comment below a disabling comment. As long as #1 is not fixed, this is not of concern, as the disable comment disables all rules, but once we output more specific rule failures, this should be taken into account and existing comments should be updated.

Output specific failing rules in inserted comment

Currently, tslint-auto-disable inserts the comment // tslint:disable-next-line. This turns of all rule validations for the next line. Ideally tslint-auto-disable would output a more specific disabeling comment, to only disable the rule which is actually failing.

getPreEmitDiagnostics failure

Env: Windows & Ubuntu
Project: using Rush and pnpm
Powershell Command: npx tslint-auto-disable 'src/**/*.{ts,tsx}' -p .\tsconfig.json -c .\tslint.json -e ['*.d.ts']

getPreEmitDiagnostics emits a lot of failure on my node_module and lib *.d.ts files, which will block further actions.
I tried removing code snippet below and it worked.

        const diagnostics = ts.getPreEmitDiagnostics(program);
        if (diagnostics.length !== 0) {
            const message = diagnostics
                .map(d => showDiagnostic(d, program))
                .join("\n");
            throw new Error(message);
        }

So why do we need the getPreEmitDiagnostics in the first place?
Any idea why Diagnostics failed while I can run a successful build?

Thanks.

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.