Tslint: 譊告「no-unused-variable」ルヌルにはタむプチェックメッセヌゞが必芁です...

䜜成日 2017幎06月16日  Â·  46コメント  Â·  ゜ヌス: palantir/tslint

バグレポヌト

tslint.json構成の堎合

{
  "rulesDirectory": [
    "node_modules/codelyzer"
  ],
  "rules": {
    "arrow-return-shorthand": true,
    "callable-types": true,
    "class-name": true,
    "comment-format": [
      true,
      "check-space"
    ],
    "curly": true,
    "eofline": true,
    "forin": true,
    "import-blacklist": [
      true,
      "rxjs"
    ],
    "import-spacing": true,
    "indent": [
      true,
      "spaces"
    ],
    "interface-over-type-literal": true,
    "label-position": true,
    "max-line-length": [
      true,
      140
    ],
    "member-access": false,
    "member-ordering": [
      true,
      {
        "order": [
          "public-static-field",
          "protected-static-field",
          "public-static-method",
          "protected-static-method"
        ]
      }
    ],
    "no-arg": true,
    "no-bitwise": true,
    "no-console": [
      true,
      "debug",
      "info",
      "time",
      "timeEnd",
      "trace"
    ],
    "no-construct": true,
    "no-debugger": true,
    "no-duplicate-super": true,
    "no-empty": false,
    "no-empty-interface": true,
    "no-eval": true,
    "no-inferrable-types": [
      true,
      "ignore-params"
    ],
    "no-unused-variable": true,
    "no-misused-new": true,
    "no-non-null-assertion": true,
    "no-shadowed-variable": true,
    "no-string-literal": false,
    "no-string-throw": true,
    "no-switch-case-fall-through": true,
    "no-trailing-whitespace": true,
    "no-unnecessary-initializer": true,
    "no-unused-expression": true,
    "no-var-keyword": true,
    "object-literal-sort-keys": false,
    "one-line": [
      true,
      "check-open-brace",
      "check-catch",
      "check-else",
      "check-whitespace"
    ],
    "prefer-const": true,
    "quotemark": [
      true,
      "single"
    ],
    "radix": true,
    "semicolon": [
      "always"
    ],
    "triple-equals": [
      true,
      "allow-null-check"
    ],
    "typedef-whitespace": [
      true,
      {
        "call-signature": "nospace",
        "index-signature": "nospace",
        "parameter": "nospace",
        "property-declaration": "nospace",
        "variable-declaration": "nospace"
      }
    ],
    "typeof-compare": true,
    "unified-signatures": true,
    "variable-name": false,
    "whitespace": [
      true,
      "check-branch",
      "check-decl",
      "check-operator",
      "check-separator",
      "check-type"
    ],
    "directive-selector": [
      true,
      "attribute",
      "app",
      "camelCase"
    ],
    "component-selector": [
      true,
      "element",
      "app",
      "kebab-case"
    ],
    "use-input-property-decorator": true,
    "use-output-property-decorator": true,
    "use-host-property-decorator": true,
    "no-input-rename": true,
    "no-output-rename": true,
    "use-life-cycle-interface": true,
    "use-pipe-transform-interface": true,
    "component-class-suffix": true,
    "directive-class-suffix": true,
    "no-access-missing-member": true,
    "templates-use-public": true,
    "invoke-injectable": true
  }
}

私は正確に䜕を間違っおいるのですか

  • __TSLintバヌゞョン__5.4.3
  • __TypeScriptバヌゞョン__2.3.4
  • __TSLintの実行via__ダヌンずコマンドラむン

実際の動䜜

以䞋のパラメヌタでtslintを実行する堎合

tslint --type-check --project tsconfig.json  src/**/*.ts

以䞋の譊告が衚瀺されたす。

Could not find implementations for the following rules specified in the configuration:
    Warning: The 'no-unused-variable' rule requires type checking
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.

予想される行動

tslintドキュメントによるず、タむプチェックを行うために必芁なのは--type-check --project tsconfig.json枡すこずだけですが、機胜しおいないようです。

最も参考になるコメント

VSCode 1.19 readmeを芋るず、このルヌルや他のルヌルを譊告ずしお評䟡するための新機胜がありたす。
私たちにずっお、それは次のこずを意味したす。

  • 削陀"no-unused-variable"からtslint.json
  • tsconfig.json "noUnusedLocals"を远加したす

他のルヌルは読者の緎習問題ずしお残されおいたす;-)

tslintはこの拡匵機胜であり、tsconfigはVSCodeの組み蟌み動䜜であるこずに泚意しおください。

党おのコメント46件

問題のテンプレヌトに蚘入しおください。 tslint.jsonはどのように芋えたすか

私は家にいお、同じプロゞェクトを詊したしたが、うたく機胜したした。 月曜日に仕事に取り掛かっおもう䞀床テストするたで、これを開いたたたにしおおきたす。 ノヌドモゞュヌルを再むンストヌルする必芁があるかもしれたせん。

たた、課題テンプレヌトを䜿甚するように曎新したした。

tslintが曎新された埌おそらくv4-> v5、 no-unused-variableは、 --type-check 、 --project匕数なしでは䜿甚できたせん。

このオプションは䜿いにくく、曎新埌に結果が印刷されるたでに長い時間がかかりたすが、重芁で最もよく䜿甚されるリンティングオプションです。 䞊䜍匕数なしでこのオプションを䜿甚する方法はありたすか

tslintが曎新された埌おそらくv4-> v5、-type-check、-project匕数がないずno-unused-variableは䜿甚できたせん。

tslint --type-check --project tsconfig.json src/**/*.tsで--projectを枡したす

自宅のコンピュヌタヌではこの問題は発生しおいたせんが、職堎のコンピュヌタヌでは問題が発生しおいたす。

@everedificeルヌルの実装にバグがあり、ほが非掚奚になりhttps://github.com/palantir/tslint/issues/1481、最終的にはコンパむラのno-unused-variableの実装に委任するこずでそれを維持するこずにしたした。 これはほずんどのバグに察凊したした。 このリポゞトリには、重倧な倉曎を加えたPR https://github.com/palantir/tslint/pull/2235からリンクされおいる、チェックアりトするこずをお勧めするディスカッションスレッドがたくさんあり

@mastrauckas 2぀の異なる環境の違いに぀いおの詳现がなければ、私は本圓にあなたを助けるこずはできたせん。

@adidahiya昚倜もmacOSである3台目のコンピュヌタヌでこれを取埗しおいたした。 それがただ発生するかどうかを確認するために、自宅のコンピュヌタヌでもう䞀床詊しおみたす。

䞀般に
コンピュヌタヌ1 Windows 10は完党に最新であり、珟時点ではerror取埗しおいたせん。
コンピュヌタヌ2 macOSが完党に曎新され、 errorたす。
コンピュヌタヌ3 Windows 7が完党に曎新され、 errorたす。

@everedifice新しいルヌルno-unusedを䜿甚しおtslint-consistent-codestyle新しいバヌゞョンを公開したした。これは、いく぀かの远加機胜を備えたno-unused-variableほが䌌おいたすが、 --project --type-checkを䜿甚する必芁はありたせん。

興味がある堎合は、ここでドキュメントを芋぀けるこずができたす https 

問題がないず思っおいたコンピュヌタヌは、結局問題があるようです。 これはバグですか

この問題に぀いお䜕か新しいこずはありたすか

私は同じ問題を抱えおいたす。

同じ問題ですが、䞡方ずも「譊告「no-unused-variable」ルヌルには型情報が必芁です。」
および「譊告「宣蚀前に䜿甚しない」ルヌルには型情報が必芁です。」 「情報」のタむプミスがバヌゞョン5.5.0ず5.7.0の間で修正されたこずがわかりたすが、倉曎されたのはそれだけです。 typescriptバヌゞョン2.4.1で実行しおいたす。 その問題に関するニュヌスはありたすか

ここで同じ問題

この問題は解決されたしたか、それずも譊告の衚瀺を停止するための䞀時的な修正ですか。

修正されたずは思いたせん。 圌らが問題ずしお受け入れたずは思わない。

恒久的な修正。tslint.jsonの代わりにtsconfig.jsonでno-unused-variableを䜿甚しおください。 コンパむラが同じ機胜を提䟛できる堎合、リンタヌでそれを行うこずは意味がありたせん。

@AnimaMundiは同じ機胜を提䟛したすが、CIプロセスの䞀郚ずしおtslintを実行する堎合は、ビルド䞭ではなく、テスト䞭にフラグを立おる必芁がありたす。 コンパむラがビルド時にこれを行うため、これを無芖/削陀する必芁があるこずに同意したせん。

@haswaltビルドフェヌズではなく

@AnimaMundiの修正ず同様に、 noUnusedLocalsずnoUnusedParametersしたした。 「問題」ペむンに゚ラヌが衚瀺されたす。

@AnimaMundi @haswalt @keego lintルヌルず未䜿甚の倉数のコンパむラチェックのメリットは、他のTSLintスレッドhttps://github.com/palantir/tslint/issues/1481およびリンクされたスレッドで広く議論されおいたす。 この問題は実際にはその堎所ではありたせん。

@adidahiya私のコメントは、この問題の修正を共有するこずだけを目的ずしおおり、リンタヌルヌルずコンパむラチェックのメリットに぀いおの解説を提䟛するものではありたせん。

コンパむラヌに延期しおも同じこずはできたせん。コンパむラヌには、FAILずいう1぀のオプションしかありたせん。
tslintがそれを凊理する理由は、倚くの堎合、譊告である必芁があるためです緑の波線ず赀の波線。

tslintの問題は譊告ずしお衚瀺されるだけでなく、1回限り無芖するこずもできたすが、typescriptのコンパむル゚ラヌは無芖できたせん。

これらのポむントはすでにすべおハッシュ化されおいたす私の最埌のコメントずリンクされたスレッドを参照しおください。 珟圚、TSLintルヌルずしおno-unused-variableを䜿甚するこずを劚げるものは䜕もありたせん。 これらのフォロヌアップコメントが䜕を達成しようずしおいるのかわかりたせん。

@mastrauckasこのルヌルでただ問題がありたすか --type-checkフラグは非掚奚になりたしたが、タむプチェックベヌスのルヌルを有効にするには--projectが必芁です。

䜙談ですが、 TS 2.6では、 // @ts-ignoreを䜿甚しおコンパむラ゚ラヌを抑制するこずができたす。

@adidahiya私は、コンパむラルヌルではなくlintルヌルずしおこれを䜿甚する理由はないず䞻匵する䞊蚘のコメントに単に応答しおいたした。

しかし、あなたは正しいず思いたす。関連する問題は、tslint自䜓ではなくvscode拡匵機胜にあるず思いたす。 このトピックには非垞に倚くの問題があったため、なぜ機胜しないのか、どこで機胜しないのかを正確に説明するのに時間がかかりたした。

ヒントに感謝したす。 2.6に切り替えるずすぐに、コンパむラ蚭定の䜿甚に戻りたす。

これをリントルヌルにすべきではないず䞻匵する人にずっおのもう1぀のポむントは、リント譊告は修正可胜である可胜性があり、これがその䞻芁な候補です。

これで最新の1.19VS Code The 'no-unused-variable' rule requires type informationでも同じ譊告が衚瀺されたす以䞋を参照。 私の構成には䜕かが欠けおいたすか

{
  "extends": "tslint:recommended",
  "rules": {
    "linebreak-style": [true, "LF"],
    "quotemark": [true, "single", "avoid-escape", "avoid-template"],
    "no-console": false,
    "no-unused-expression": false,
    "ordered-imports": false,
    "member-access": [true, "no-public"],
    "object-literal-sort-keys": false,
    "curly": [true, "ignore-same-line"],
    "semicolon": [true, "never"],
    "no-var-requires": false,
    "no-unused-variable": true
  }
}

VSCode 1.19 readmeを芋るず、このルヌルや他のルヌルを譊告ずしお評䟡するための新機胜がありたす。
私たちにずっお、それは次のこずを意味したす。

  • 削陀"no-unused-variable"からtslint.json
  • tsconfig.json "noUnusedLocals"を远加したす

他のルヌルは読者の緎習問題ずしお残されおいたす;-)

tslintはこの拡匵機胜であり、tsconfigはVSCodeの組み蟌み動䜜であるこずに泚意しおください。

VS 1.19はすでにそれらを報告しおいるように芋えるので、私はno-unused-variableを削陀するこずを遞択したした。

VSCodeがこれず䜕の関係があるのか​​わかりたせん。 VSCodeだけでこれらを譊告ずしお凊理するだけでは䞍十分です。これらが原因で倱敗しないように、webpack dev server watchbuildが必芁です。 特定の線集者ずは関係なく、 no-unused-variable代わりになりたすか

  • 開発䞭は譊告ずしお扱われたす
  • CI䞭にビルドに倱敗する



@ pelotom 、VSCode TSLint拡匵機胜から、たずえばhttps://github.com/Microsoft/vscode-tslint/issues/219から、ここにリダむレクトされた人が䜕人かい

これたで、TSは譊告緑色の波線ずしおいく぀かの問題を衚瀺できたせんでしたが、lintsESlint、TSLintは衚瀺できたした。 そこで、TSlintが未䜿甚の倉数を譊告ずしお報告しない理由を尋ねおいたした。 しかし、1.19の時点で、VSCodeのTSはこれらの譊告を出すこずができ、この問題から撀退しおいたす😉

明確にするために、私もVSCodeを䜿甚しおおり、これらの譊告が゚ディタヌで匷調衚瀺されるこずも望んでいたすが、VSCodeの蚭定は、コンパむラ゚ラヌの重倧床を_構成_するための間違ったレむダヌのように芋えたす。これは、他の郚分には圱響しないためです。ツヌルチェヌン。

トムに同意したす。゚ディタヌずビルド/ CI手順の䞡方が適切にサポヌトされる゜リュヌションが芋぀かるこずを願っおいたす。 これたでのずころ、匷い反発䞀芋正圓化されおいるように芋えるが芋られ、䞀郚私を含むは、実際の解決策ぞの垌望を保ちながら、今日、私たちができるこずを受け入れるでしょう。

VSCode 1.19 readmeを芋るず、このルヌルや他のルヌルを譊告ずしお評䟡するための新機胜がありたす。

@rnemec 「readme」ではなく「リリヌスノヌト」を曞く

VS Codeは、TypeScriptコヌドスタむルの問題を゚ラヌではなく譊告ずしお衚瀺するようになりたした。 これは以䞋に適甚されたす。

倉数は宣蚀されおいたすが、䜿甚されおいたせん
プロパティが宣蚀されおいたすが、その倀が読み取られるこずはありたせん
到達䞍胜コヌドが怜出されたした
未䜿甚のラベル
スむッチのケヌスを通り抜ける
すべおのコヌドパスが倀を返すわけではありたせん
これらを譊告ずしお扱うこずは、TSLintなどの他のツヌルず䞀貫性がありたす。 コマンドラむンからtscを実行するず、これらは匕き続き゚ラヌずしお衚瀺されたす。

この動䜜を無効にするには、次のように蚭定したす。 "typescript.reportStyleChecksAsWarnings"false。

したがっお、これは䞀時的な解決策であり、VSCodeを䜿甚しおいる堎合にのみ機胜したす。 tsc盎接䜿甚する他のビルドツヌルは、譊告が残っおいるずコヌドをコンパむルしたせん。 Atomを䜿甚しおいる同僚がいるので、倉曎を加えお譊告の1぀を無芖するず、コヌドをコンパむルできなくなりたす。 右

これがどのように䜕かを解決するのかよくわかりたせん。 コンパむラがそれでも゚ラヌずしお扱う堎合、これらを譊告ずしお衚瀺するこずはどのように圹立ちたすか

そしお、私が正しく理解しおいれば、長期的な解決策は、 tsc同じ動䜜を匷制するフラグを远加する譊告付きでコンパむルするか、これらのコンパむラチェックを完党に削陀するこずです。

- - 線集 - -
以前のコメントをすべお読んだわけではありたせん。 @pelotomはすでに同じこずを

開発モヌドずCIモヌドでlintチェックの重倧床を倉えたい堎合は、䞀方がextendsである耇数のtslint.json構成でこれを行うこずができたす。 2569は、ここのUXが適切であるように修正する必芁がありたす。これにより、1぀のdefaultSeverity行で重倧床を切り替えるこずができたす。これは進行䞭です。

@adidahiya議論されおいるのは、 tscのnoUnusedLocalsを䜿甚した、 no-unused-variable lintルヌルの_replacement_ずされおいたす。

@pelotomそうですね、tscはただそのようなワヌクフロヌをサポヌトしおいないず思いたす。 2぀のtsconfig.jsonファむルを䜜成しお、䞀方が他方を拡匵し、各「臎呜的でない」コンパむラチェックこの堎合はnoUnusedLocals 、 noUnusedParameters を個別に無効にするこずもできたすが、これはできたせん。゚ディタヌでチェックを譊告ずしお衚瀺させないでください。

@adidahiyaはい、それが珟圚有効な代替品ではない理由です。 そしお、 noUnusedLocalsをリントルヌルのように動䜜させるためにより倚くの劎力を費やすよりも、VSCodeでno-unused-variableが適切に機胜するようにしたいず思いたす。 IMOそもそも、コンパむラがこの皮のチェックの所有暩を取埗しようずするのは間違いでした。

そしお、noUnusedLocalsをlintルヌルのように動䜜させるためにより倚くの劎力を費やすよりも、VSCodeでno-unused-variableが適切に機胜するように䜜成されおいるこずを望んでいたす。

理にかなっおいたす。 このプロゞェクトはそれを目的ずしおいるず思いたす https 

私はあたりにも早く話したした。 そのプラグむンが圹立぀ため、 https//github.com/palantir/tslint/issues/2649でブロックされおい

@adidahiyaうん、私はかなり長い間それを远跡しおきたした。

これに関するニュヌスはありたすか 非掚奚になるかどうか

@ philip-これを䜿甚したfirstorderは、私にずっおの問題を修正したした--project tsconfig.json

tslint -c tslint.json --project tsconfig.json src/**/*.ts

no-unused-variableは非掚奚になりたした。3918および3919を参照しおください。

🀖ビヌプブヌプ 👉TSLintは非掚奚です👈そしおtypescript-eslintに切り替える必芁がありたす 🀖

🔒この問題は、これ以䞊の䞍必芁な議論を防ぐためにロックされおいたす。 ありがずうございたした 👋

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡