2016-12-02 30 views
13

I zmodernizowane moim tslint do 4.0.2 i teraz mam dużo błędów jak na poniższymAktualizacja TSLint Błędy: Nie można znaleźć implementacje dla następujących zasadach określonych w konfiguracji

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 

Uważam, że problem może być może mój tslint.json może być nieaktualny i muszę go zaktualizować, ale nie znalazłem żadnych informacji, jak to zrobić, a nawet jeśli moje założenie jest poprawne.

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" 
    ] 
    } 
} 

Odpowiedz

33

Byłem w tej samej łodzi. Nie wiem jaka była twoja poprzednia wersja tslint, ale dla mnie uaktualniono wersję 3.15.1 do 4.0.2, a moja lista "złamanych reguł" jest inna niż twoja. Mimo to mogę zaoferować ci kilka poprawek/wyjaśnień dla tych, które mieliśmy ze sobą.

Po prostu poszedłem do tslint's changelog on GitHub, znalazłem złamaną regułę, otrzymałem numer wydania na końcu linii, & sprawdziła problem. Najprostszym sposobem nawigacji było dodanie numeru wydania na końcu adresu URL wydania GitHub. Na przykład label-undefined był http // github.com/palantir/tslint/problemy/877

Oto te, musiałem wymyślić

  • etykieta-undefined -> maszynopis kompilator obsługuje to teraz, więc usunąć "label-undefined": true z tslint.json a następnie dodać "allowUnusedLabels": false do sekcji compilerOptions swojej tsconfig.json
  • no-konstruktor-vars -> przemianowany regułę, tak aby zmienić "no-constructor-vars""no-parameter-properties" w tslint.json
  • bez duplikatu klucza -> usuń "no-duplicate-key": true łącznie b/c maszynopis obsługuje go teraz (nie będzie kompilacji, jeśli klucze dup).
  • no-nieosiągalny -> maszynopis kompilator obsługuje to teraz, więc usunąć "no-unreachable": true z tslint.json a następnie dodać "noImplicitReturns": true do sekcji compilerOptions swojej tsconfig.json
  • stosowanie restrykcyjne -> usuń "use-strict" reguły całkowicie b/c maszynopis teraz analizuje wszystkie moduły modułów w trybie ścisłym.
+0

Nadal przydatne rozwiązanie i bardzo dobrze wyjaśnione! –

2

tslint v4 usunięto kilka zasad, które nie miały sens i maszynopis sprawdzenie jeszcze lepsze. Jeśli nadal chcesz korzystać z tych reguł, musisz użyć tslint v3.

+0

Dzięki za pomoc Basarat –

4

Od wersji kodakera 2.0.0-beta.1 wprowadzono kilka zmian powodujących załamanie. Usunięto dyrektywę-nazwa-selektora, nazwę-komponentu-selektora, typ-dyrektywy-selector, typ-selektora-komponentu, prefiks-selektora-dyrektywy-i prefiks-selektora-selektora-nie są już obsługiwane.Zamiast dodali poniższego zasadę:

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

Proszę spojrzeć na changelog dla codelyzer i szukać jakiegokolwiek przepisu, który nie jest obsługiwany

0

miałem ten sam problem z Could not find implementations for the following rules... ostrzeżenia pojawiają się w moim IDE, WebStorm 2016.x. W moim przypadku implementacja reguł została zapewniona przez IDE, ponieważ uaktualnienie mojego WebStorm rozwiązało problem.

Zaktualizowałem maszynopis, TSLint & Codelyzer bez skutku. Sprawdziłem zawartość mojego pliku tslint.json i nie znalazłem nic. Aktualizacja WebStorm rozwiązała problem.

0

Miałem ten sam problem po skopiowaniu reguł z kanciastego projektu. Po prostu utwórz nowy pusty projekt maszynopisu i wszystko będzie dobrze.