web-dev-qa-db-ja.com

TSLintエラーの更新:構成で指定された次のルールの実装が見つかりませんでした

Tslintを4.0.2にアップグレードしたところ、次のような多くのエラーが発生しました

Could not find implementations for the following rules specified in the configuration:
    directive-selector-name
    component-selector-name
    directive-selector-type
    component-selector-type
    directive-selector-prefix
    component-selector-prefix
    label-undefined
    no-constructor-vars
    no-duplicate-key
    no-unreachable
    use-strict

私の問題は、tslint.jsonが古くなっている可能性があり、それを更新する必要があるかもしれないと考えていますが、それを行う方法に関する情報や、仮定が正しい場合でも情報が見つかりません。

tslint.json

{
  "rulesDirectory": [
    "node_modules/codelyzer"
  ],
  "rules": {
    "directive-selector-name": [true, "camelCase"],
    "component-selector-name": [true, "kebab-case"],
    "directive-selector-type": [true, "attribute"],
    "component-selector-type": [true, "element"],
    "directive-selector-prefix": [true, "my"],
    "component-selector-prefix": [true, "my"],
    "use-input-property-decorator": true,
    "use-output-property-decorator": true,
    "use-Host-property-decorator": true,
    "no-attribute-parameter-decorator": true,
    "no-input-rename": true,
    "no-output-rename": true,
    "no-forward-ref" :true,
    "use-life-cycle-interface": true,
    "use-pipe-transform-interface": true,
    "pipe-naming": [true, "camelCase", "my"],
    "component-class-suffix": true,
    "directive-class-suffix": true,
    "ban": [true,
      ["_", "extend"],
      ["_", "isNull"],
      ["_", "isDefined"]
    ],
    "class-name": true,
    "comment-format": [false,
      "check-space",
      "check-lowercase"
    ],
    "curly": true,
    "eofline": true,
    "forin": true,
    "indent": [true, 2],
    "interface-name": true,
    "jsdoc-format": true,
    "label-position": true,
    "label-undefined": true,
    "max-line-length": [false, 140],
    "member-ordering": [true,
      "public-before-private",
      "static-before-instance",
      "variables-before-functions"
    ],
    "no-arg": true,
    "no-bitwise": true,
    "no-console": [true,
      "debug",
      "info",
      "time",
      "timeEnd",
      "trace"
    ],
    "no-construct": true,
    "no-constructor-vars": false,
    "no-debugger": true,
    "no-duplicate-key": true,
    "no-duplicate-variable": true,
    "no-empty": true,
    "no-eval": true,
    "no-string-literal": true,
    "no-switch-case-fall-through": true,
    "trailing-comma": true,
    "no-trailing-whitespace": true,
    "no-unused-expression": true,
    "no-unused-variable": true,
    "no-unreachable": true,
    "no-use-before-declare": true,
    "no-var-requires": true,
    "one-line": [true,
      "check-open-brace",
      "check-catch",
      "check-else",
      "check-whitespace"
    ],
    "quotemark": [true, "single"],
    "radix": true,
    "semicolon": true,
    "triple-equals": [true, "allow-null-check"],
    "typedef": [true,
      "callSignature",
      "indexSignature",
      "parameter",
      "propertySignature",
      "variableDeclarator"
    ],
    "typedef-whitespace": [true,
      ["callSignature", "noSpace"],
      ["catchClause", "noSpace"],
      ["indexSignature", "space"]
    ],
    "use-strict": false,
    "variable-name": false,
    "whitespace": [true,
      "check-branch",
      "check-decl",
      "check-operator",
      "check-separator",
      "check-type"
    ]
  }
}

packages.json

{
  "dependencies": {
    "@angular/common": "^2.2.4",
    "@angular/compiler": "^2.2.4",
    "@angular/core": "^2.2.4",
    "@angular/forms": "^2.2.4",
    "@angular/http": "^2.2.4",
    "@angular/platform-browser": "^2.2.4",
    "@angular/platform-browser-dynamic": "^2.2.4",
    "@angular/router": "^3.2.4",
    "@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.14",
    "ag-grid": "^7.0.0",
    "angularfire2": "^2.0.0-beta.5",
    "core-js": "^2.4.1",
    "firebase": "^3.6.2",
    "rxjs": "5.0.0-rc.4",
    "zone.js": "^0.7.2"
  },
  "devDependencies": {
    "del": "^2.0.2",
    "gulp": "gulpjs/gulp#4ed9a4a3275559c73a396eff7e1fde3824951ebb",
    "gulp-hub": "frankwallis/gulp-hub#d461b9c700df9010d0a8694e4af1fb96d9f38bf4",
    "gulp-filter": "^4.0.0",
    "gulp-util": "^3.0.7",
    "gulp-sass": "^2.1.1",
    "browser-sync": "^2.18.2",
    "browser-sync-spa": "^1.0.3",
    "karma": "^1.3.0",
    "karma-coverage": "^1.1.1",
    "karma-jasmine": "^1.0.2",
    "karma-junit-reporter": "^1.1.0",
    "jasmine": "^2.4.1",
    "es6-shim": "^0.35.0",
    "karma-chrome-launcher": "^2.0.0",
    "babel-plugin-istanbul": "^3.0.0",
    "karma-webpack": "^1.7.0",
    "webpack": "2.1.0-beta.20",
    "html-webpack-plugin": "^2.24.1",
    "style-loader": "^0.13.0",
    "css-loader": "^0.26.0",
    "postcss-loader": "^1.1.1",
    "autoprefixer": "^6.5.3",
    "json-loader": "^0.5.4",
    "extract-text-webpack-plugin": "^2.0.0-beta.3",
    "html-loader": "^0.4.3",
    "ts-loader": "^1.2.2",
    "sass-loader": "^4.0.2",
    "node-sass": "^3.13.0",
    "eslint": "^3.11.1",
    "eslint-config-xo-space": "^0.15.0",
    "eslint-loader": "^1.6.1",
    "babel-loader": "^6.2.8",
    "babel-eslint": "^7.1.1",
    "eslint-plugin-babel": "^4.0.0",
    "tslint": "^4.0.2",
    "TypeScript": "^2.0.10",
    "typings": "^2.0.0",
    "tslint-loader": "^3.2.1",
    "codelyzer": "^2.0.0-beta.1"
  },
  "scripts": {
    "build": "gulp",
    "serve": "gulp serve",
    "serve:dist": "gulp serve:dist",
    "test": "gulp test",
    "test:auto": "gulp test:auto"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "browser": true,
      "jasmine": true
    },
    "extends": [
      "xo-space/esnext"
    ]
  }
}
27
David Cruwys

私は同じ船に乗っていました。 tslintの以前のバージョンが何であったかはわかりませんが、私にとっては、3.15.1から4.0.2にアップグレードしたため、「壊れたルール」リストはあなたのものとは異なります。それでも、私はあなたと私が共通していたものにいくつかの修正/説明を提供することができます。

GitHubのtslintのchangelog に移動し、壊れたルールを見つけ、行の最後に問題番号を取得し、問題を調べました。最も簡単にナビゲートする方法は、GitHubの問題URLの最後に問題番号を追加することでした。たとえば、 label-undefined was http // github.com/palantir/tslint/issues/877

ここに私が理解しなければならなかったものがあります

  • label-undefined-> TypeScriptコンパイラーはこれを処理するため、"label-undefined": true tslint.jsonから追加して"allowUnusedLabels": false tsconfig.jsonのcompilerOptionsセクション
  • no-constructor-vars->ルールの名前を変更したため、"no-constructor-vars"から"no-parameter-properties" tslint.json内
  • no-duplicate-key-> remove "no-duplicate-key": true完全にb/c TypeScriptが処理するようになりました(dupキーの場合はコンパイルされません)。
  • no-unreachable-> TypeScriptコンパイラがこれを処理するので、"no-unreachable": true tslint.jsonから追加して"noImplicitReturns": true tsconfig.jsonのcompilerOptionsセクション
  • use-strict-> remove "use-strict"ルールb/c TypeScriptは、すべてのモジュール本体を厳密モードで解析するようになりました。
47
B Diehl

現在、codelyzer 2.0.0-beta.1にはいくつかの重大な変更があります。ディレクティブセレクター名、コンポーネントセレクター名、ディレクティブセレクタータイプ、コンポーネントセレクタータイプ、ディレクティブセレクタープレフィックス、コンポーネントセレクタープレフィックスは削除され、サポートされなくなりました。代わりに、以下のルールを追加しました。

"directive-selector": [true, "attribute", "app", "camelCase"],
"component-selector": [true, "element", "app", "kebab-case"],

Codelyzerの changelog を見て、サポートされていないルールを検索してください

6
Anvesh Reddy

tslint v4は、もはや意味をなさない一連のルールを削除し、TypeScriptチェックが改善されました。これらのルールを引き続き使用する場合は、tslint v3を使用する必要があります。

3
basarat

angularプロジェクトからルールをコピーした後、同じ問題が発生しました。新しい空のTypeScriptプロジェクトを作成するだけで問題ありません。

1
skiabox

Angularプロジェクトをアップグレードした後、同じ問題が発生しました。このルールを削除すると、問題が解決しました。

"no-misused-new"
0
lance-p

IDEのWebStorm 2016.xにCould not find implementations for the following rules...警告が表示されるという同じ問題がありました。私の場合、WebStormをアップグレードすると問題が修正されたため、ルールの実装はIDEによって提供されました。

TypeScript、TSLint、およびCodelyzerをアップグレードしましたが、使用できません。 tslint.jsonファイルの内容を調べましたが、何も見つかりませんでした。 WebStormをアップグレードすると問題が修正されました。

0