web-dev-qa-db-fra.com

Mettre à jour les erreurs TSLint: Impossible de trouver les implémentations pour les règles suivantes spécifiées dans la configuration

J'ai mis à jour mon tslint à 4.0.2 et maintenant je reçois beaucoup d'erreurs comme celle-ci

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

Je pense que le problème peut être que mon tslint.json est peut-être obsolète et que je dois le mettre à jour, mais je n'ai trouvé aucune information sur la manière de le faire ni même si mon hypothèse est correcte.

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"
    ]
  }
}
23
David Cruwys

J'étais dans le même bateau. Je ne sais pas quelle était votre version précédente de tslint, mais pour moi, je suis passé de 3.15.1 à 4.0.2 et ma liste de "règles enfreintes" qui en résulte est différente de la vôtre. Néanmoins, je peux vous proposer quelques solutions/explications à celles que vous et moi avions en commun.

Je suis simplement allé dans le journal des modifications de tslint sur GitHub , j'ai trouvé la règle qui était enfreinte, le numéro de question au bout de la ligne et j'ai examiné la question. Le moyen le plus simple de naviguer consistait à ajouter le numéro du problème à la fin de l'URL de leur numéro GitHub. Par exemple, label-non défini était http // github.com/palantir/tslint/issues/877

Voici ceux que je devais comprendre

  • label-undefined -> Le compilateur TypeScript gère cela maintenant, supprimez donc "label-undefined": true de tslint.json, puis ajoutez "allowUnusedLabels": false à la section compilerOptions de votre tsconfig.json.
  • no-constructor-vars -> a renommé la règle. Modifiez donc "no-constructor-vars" en "no-parameter-properties" dans votre fichier tslint.json.
  • no-duplicate-key -> remove "no-duplicate-key": true tout à fait b/c TypeScript le gère maintenant (ne compilera pas les clés dupliquées).
  • no-unreachable -> Le compilateur TypeScript gère cela maintenant, supprimez donc "no-unreachable": true de tslint.json, puis ajoutez "noImplicitReturns": true à la section compilerOptions de votre tsconfig.json.
  • use-strict -> supprimer la règle "use-strict" complètement b/c TypeScript analyse maintenant tous les corps de module en mode strict.
45
B Diehl

Depuis codelyzer 2.0.0-beta.1, il y a eu quelques changements décisifs . Ils ont supprimé nom-sélecteur-directive, nom-sélecteur-composant, type-sélecteur de directive, type-sélecteur de composant préfixe et composant-selector-prefix ne sont plus pris en charge. Au lieu de cela, ils ont ajouté la règle ci-dessous:

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

Veuillez regarder le changelog pour le codelyzer et rechercher toute règle non supportée 

6
Anvesh Reddy

tslint v4 a supprimé un ensemble de règles qui n'avaient plus de sens et la vérification de TypeScript s'est améliorée. Vous devez utiliser tslint v3 si vous souhaitez toujours utiliser ces règles.

2
basarat

J'ai eu le même problème après la mise à niveau d'un projet angulaire. Supprimer cette règle a résolu le problème pour moi:

"no-misused-new"
0
lance-p

J'ai eu le même problème avec les avertissements Could not find implementations for the following rules... qui apparaissent dans mon IDE, WebStorm 2016.x. Dans mon cas, les implémentations de règles ont été fournies par l'IDE, car la mise à niveau de WebStorm a résolu le problème.

J'ai mis à jour TypeScript, TSLint & Codelyzer en vain. J'ai inspecté le contenu de mon fichier tslint.json et rien trouvé. La mise à niveau de WebStorm a résolu le problème.

0

J'ai eu le même problème après avoir copié les règles d'un projet angulaire ..__: créez simplement un nouveau projet TypeScript vide et tout ira bien.

0
skiabox