Tslint: 未使用の変数のないルールの非推奨を開始します

作成日 2016年08月13日  ·  30コメント  ·  ソース: palantir/tslint

v2.0でのこれらの新しいコンパイラチェックに気づきました: --noUnusedParameters--noUnusedLocals 。 これらは本質的にno-unused-variableルールを時代遅れにします。 これは非常に基本的なルールなので、すぐに削除する必要はないと思います。

提案:

  • v4.0のtslint:latesttslint:recommended no-unused-variableを削除します
  • ルールをv4.0で非推奨としてマークする

    • 多分失敗メッセージで?

  • TSLintv5.0でルールの実装を完全に削除します
Won't Fix Breaking Change

最も参考になるコメント

小さなフィードバック。 これらのルールをtslintに含めると、リンター警告が表示されるので非常に便利ですが、コードはコンパイルされます。 個人的には、特にリファクタリングやアイデアの試行などの迅速なコード変更を実行するときに、未使用の変数、パラメーター、またはインポートが原因でコンパイラーが失敗するのは非常に面倒です。

全てのコメント30件

ここでの優れた機能は、コンパイラーがオプトアウトを提供することです。変数名に先頭にアンダースコアを付けると、コンパイラーはフラグを立てません。 これにより、コンパイラチェックを有効にしたいが、変更したくないエッジケースが1つか2つある場合に簡単になります。

@JKillianそれはパラメータにのみ当てはまりますよね?

@ glen-84-良いキャッチ、あなたは正しいと思います。

@adidahiyaは、 --noUnusedLocalsno-unused-variableの動作がまったく異なることに注意してください。

--noUnusedLocalsは、クラスのプロパティもチェックしているようです(TSバージョン2.0.2の場合)。

@charsleysaええ、実装は少し異なります。 コンパイラオプションはTSLintルールよりも優れていると思います。そのため、私はそれを支持したいと思います。 元の問題の投稿に記載されているように、TSLintコアからゆっくりと削除します。

バージョン4で削除する必要があると思います。すべての開発者に非推奨の警告が表示されるプレビューリリースが多数あるはずです。 そして、とにかくコンパイラオプションを支持して他のルールを削除しました。

PD:dev-1リリースでは、これは推奨設定だと思います。

ちょっとしたフィードバックと同じように、私は今夜この問題にぶつかりました。この問題を見つけた後でも、 --noUnusedLocals--noUnusedParametersはtsc構成であり、tslintではないことを理解するのに少し時間がかかりました。 エラーメッセージでそれを明確にすることが役立つかもしれません。

@ryanguillフィードバックをありがとう。 メッセージを明確にする変更をコミットしました

小さなフィードバック。 これらのルールをtslintに含めると、リンター警告が表示されるので非常に便利ですが、コードはコンパイルされます。 個人的には、特にリファクタリングやアイデアの試行などの迅速なコード変更を実行するときに、未使用の変数、パラメーター、またはインポートが原因でコンパイラーが失敗するのは非常に面倒です。

コンパイラはこれをより良い方法で処理します。このため、コンパイルが完全に行われないようにサポートしますが、たとえばwebpackのようなものを使用すると、エラーはスローされますが、コンパイルはスローされます。止まらない。

@zubivan

同意。 私はこの警告をリント段階に保つことを好みます。 私のワークフローは次のとおりです。

any file/code changes => run ts-compile => run tests => run ts-lint

ダーティなコードをすばやく変更して結果を最初にテストしてから、tslintからのガードを実行できます。 テストの前にクリーンなコードを書くように強制するのは本当に面倒です。

@michaeljota

テスト後に警告を表示することを好みますが、目標を達成するためのWebpackの例はありますか?

TSLintがコンパイラを実行し、その警告を解析してTSLint警告として出力できるのではないかと思います。 彼はTSLintをルールの実装を維持する必要から解放しますが、ユーザーは他の利点の中でも特にTSLintコメントを無効/無視することができます。

私のプロファイルの@xareeleeは、スローせずにTSコンパイルを使用したAngular2セットアップを確認できます。

これらがコンパイラの一部である理由がわかりません。 それらは純粋に文体的であり、コードの正確さに影響を与えないため、リンターオプションとしてより自然に見えます。 私も、特定の場合にこれらの警告をオーバーライドする機能が必要です。これは、tslintでは実行できますが、tscでは実行できません。

これらが現在コンパイラの一部である理由は、ここで説明するものではありません。 すでに明らかにされている理由から、彼らがこの規則を読むことはないと思います。

高速なローカル開発を妨げるためにコンパイラオプションを使用したくないためにこれに関する解決策を探している他のすべての人にとって(いくつかのコードをコメントアウトするなどは変換に失敗します)、あなたは次のようなことをすることができますこれ:

const Rule = require('tslint/lib/rules/noUnusedVariableRule').Rule;

// Hide deprecation message
Rule.metadata.deprecationMessage = '';
Rule.metadata.ruleName = 'no-unused-variable-wrapped';

module.exports.Rule = Rule;

独自のルールnoUnusedVariableWrapped.jsファイルで、 "no-unused-variable-wrapped": trueを介して有効にします。

tslintルールではなくコンパイラルールに依存して失われることの1つは、未使用のインポート/変数を自動修正して削除する機能です。

このルールを維持することに多くの関心があるようです。 私は先に進んで、ルールを非推奨にする#2256をマージしました。 組み込みの構成ではまだ推奨されていませんが、オプトインベースで利用できるようになります。

tsconfigに"jsx": "react"がある場合、tslintはreactインポートがないためにエラーをスローするはずです。

@ccorcosの「インポートがありません」は、「未使用の変数がありません」とはまったく異なるエラーです。 tscはあなたを助けてくれるはずです。

いいですね。 VSCodeでこのエラーが表示されないだけです...:/

こんにちは@adidahiya

このルールを取り戻していただきありがとうございます。 質問は、いつリリースされるのかということです。 ご覧のとおり、5.1.0にはまだ含まれていません。

@ javier-tarazagaいつものように、v5にあります。 ただし、 tslint:recommended構成では有効になっていません。

こんにちは@adidahiya

うーん変だ。 tslint 5.1.0のバージョンにルールを含めると、次のエラーが発生します。

Could not find implementations for the following rules specified in the configuration:
    no-unused-vars
Try upgrading TSLint and/or ensuring that you have all necessary custom rules installed.
If TSLint was recently upgraded, you may have old rules configured which need to be cleaned up.

これは、間違ったファイル名を使用したためです。 未使用変数ではなく、
no-unused-vars

午前02.05.201709:33 schrieb "Javier Tarazaga" [email protected]

こんにちは@adidahiyahttps ://github.com/adidahiya

うーん変だ。 tslint 5.1.0のバージョンにルールを含めると、
次のエラー、

構成で指定された次のルールの実装が見つかりませんでした:
no-unused-vars
TSLintをアップグレードするか、必要なすべてのカスタムルールがインストールされていることを確認してください。
TSLintが最近アップグレードされた場合は、クリーンアップする必要のある古いルールが構成されている可能性があります。


このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/palantir/tslint/issues/1481#issuecomment-298527837
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/ALaeKKYydi8vQ8MAhxOwBk3uL02jgzKNks5r1txLgaJpZM4JjuQh

ヘッドアップをありがとう! 今、私は#2650に直面しているので、実際に確認することはできません。

https://github.com/blakeembrey/tslint-config-standardをインストールしました
とにかくこれらの警告を取り除く方法はありますか、それが標準に関連しているのか、それとも単にtslintに関連しているのかわかりません

> [email protected] lint /Users/nikos/WebstormProjects/common
> tslint 'src/**/*.ts' 'test/**/*.ts'

Warning: The 'await-promise' rule requires type information.
Warning: The 'no-unused-variable' rule requires type information.
Warning: The 'no-use-before-declare' rule requires type information.
Warning: The 'return-undefined' rule requires type information.
Warning: The 'no-floating-promises' rule requires type information.
Warning: The 'no-unnecessary-qualifier' rule requires type information.
Warning: The 'no-unnecessary-type-assertion' rule requires type information.
Warning: The 'strict-type-predicates' rule requires type information.

@QuantumInformation --projectを使ってみましたか?

ええ、それはthxで動作します

🤖ビープブープ! 👉TSLintは非推奨です👈そしてtypescript-eslintに切り替える必要があります! 🤖

🔒この問題は、これ以上の不必要な議論を防ぐためにロックされています。 ありがとう! 👋

このページは役に立ちましたか?
0 / 5 - 0 評価