Tslint: Beginnen Sie damit, die No-Unused-Variable-Regel zu verwerfen

Erstellt am 13. Aug. 2016  ·  30Kommentare  ·  Quelle: palantir/tslint

Ich habe gerade diese neuen Compiler-Prüfungen in v2.0 bemerkt: --noUnusedParameters und --noUnusedLocals . Diese machen die no-unused-variable -Regel im Wesentlichen obsolet. Da es sich um eine sehr zentrale Regel handelt, sollten wir sie meiner Meinung nach nicht sofort entfernen.

Vorschlag:

  • Entfernen Sie no-unused-variable aus tslint:latest und tslint:recommended in v4.0
  • Markieren Sie die Regel in v4.0 als veraltet

    • vielleicht in der Fehlermeldung?

  • Entfernen Sie die Regelimplementierung vollständig in TSLint v5.0
Won't Fix Breaking Change

Hilfreichster Kommentar

Eine kleine Rückmeldung. Diese Regeln in tslint zu haben ist wirklich praktisch, da Sie die Linter-Warnung erhalten, aber Ihr Code wird trotzdem kompiliert. Ich persönlich finde es ziemlich ärgerlich, wenn der Compiler aufgrund von nicht verwendeten Variablen, Parametern oder Importen fehlschlägt, insbesondere wenn eine schnelle Codeänderung wie Refactoring oder das Ausprobieren einer Idee durchgeführt wird.

Alle 30 Kommentare

Ein gutes Feature hier ist, dass der Compiler ein Opt-out bereitstellt: Geben Sie einem Variablennamen einen vorangestellten Unterstrich und der Compiler wird ihn nicht markieren. Dies sollte es für Personen einfacher machen, die die Complier-Prüfungen aktivieren möchten, aber möglicherweise einen oder zwei Randfälle haben, die sie nicht ändern möchten.

@JKillian Das gilt nur für Parameter, oder?

@glen-84 - guter Fang, ich denke du hast Recht.

@adidahiya nur um anzumerken, dass --noUnusedLocals und no-unused-variable ganz anders funktionieren.

Das --noUnusedLocals prüft anscheinend auch Klasseneigenschaften (bei TS-Version 2.0.2).

@charsleysa ja, die Implementierung ist etwas anders. Ich denke, die Compiler-Optionen sind besser als die TSLint-Regel, weshalb ich sie bevorzugen möchte. Wie im ursprünglichen Problembeitrag erwähnt, werden wir es langsam aus dem TSLint-Kern entfernen.

Ich denke, Sie sollten es in Version 4 entfernen. Es sollte viele Vorschauversionen geben, bei denen alle Entwickler die Verfallswarnung sehen sollten. Und Sie haben sowieso andere Regeln zugunsten von Compiler-Optionen entfernt.

PD: In der Version dev-1 ist dies meiner Meinung nach eine empfohlene Einstellung.

Nur als kleines Feedback, ich bin heute Abend auf dieses Problem gestoßen, und selbst nachdem ich dieses Problem gefunden hatte, brauchte ich ein bisschen, um zu verstehen, dass die --noUnusedLocals und --noUnusedParameters tsc-Konfigurationen und nicht tslint waren. Es könnte nützlich sein, dies in der Fehlermeldung zu verdeutlichen.

@ryanguill Danke für das Feedback. Ich habe eine Änderung vorgenommen, die die Nachricht verdeutlicht

Eine kleine Rückmeldung. Diese Regeln in tslint zu haben ist wirklich praktisch, da Sie die Linter-Warnung erhalten, aber Ihr Code wird trotzdem kompiliert. Ich persönlich finde es ziemlich ärgerlich, wenn der Compiler aufgrund von nicht verwendeten Variablen, Parametern oder Importen fehlschlägt, insbesondere wenn eine schnelle Codeänderung wie Refactoring oder das Ausprobieren einer Idee durchgeführt wird.

Der Compiler geht meiner Meinung nach besser damit um, und ich unterstütze Sie dabei, dass es deswegen nicht ganz die Kompilierung sein sollte, aber wenn Sie zum Beispiel so etwas wie Webpack verwenden, werden die Fehler geworfen, aber die Kompilierung wird nicht aufhören.

An @zubivan

Zustimmen. Ich ziehe es vor, diese Warnung in der Flusenphase zu halten. Mein Arbeitsablauf ist:

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

Ich kann jede schmutzige Codeänderung schnell vornehmen und zuerst die Ergebnisse testen und dann die Wache von tslint erfüllen. Es ist wirklich ärgerlich, Sie vor dem Testen dazu zu zwingen, sauberen Code zu schreiben.

An @michaeljota

Obwohl ich es vorziehe, die Warnung nach dem Testen anzuzeigen, gibt es ein Webpack-Beispiel, um das Ziel zu erreichen?

Ich frage mich, ob TSLint einfach den Compiler ausführen und seine Warnungen als TSLint-Warnungen analysieren und ausgeben könnte? Dies würde TSLint davon befreien, eine Implementierung der Regel aufrechterhalten zu müssen, aber es würde Benutzern ermöglichen, neben anderen Vorteilen weiterhin die nützlichen Kommentare zum Deaktivieren / Ignorieren von TSLint zu verwenden.

@xareelee in meinem Profil sieht man ein Angular 2 Setup mit TS Compilation ohne Throw.

Ich verstehe nicht, warum diese Teil des Compilers sind. Sie sind rein stilistisch und haben keinen Einfluss auf die Korrektheit des Codes, daher erscheinen sie als Linter-Optionen natürlicher. Ich möchte auch die Möglichkeit haben, diese Warnungen in bestimmten Fällen zu überschreiben, was ich mit tslint tun kann, aber nicht mit tsc.

Warum diese jetzt Teil des Compilers sind, soll hier nicht diskutiert werden. Ich glaube nicht, dass sie diese Regel aus bereits dargelegten Gründen lesen werden.

Für alle anderen, die nach einer Lösung dafür suchen, weil sie die Compileroptionen nicht verwenden möchten, weil sie eine schnelle lokale Entwicklung verhindern würden (das Auskommentieren von Code usw. würde die Transpilation fehlschlagen), können Sie so etwas tun Dies:

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;

in Ihrer eigenen Regeldatei noUnusedVariableWrapped.js und aktivieren Sie sie dann über "no-unused-variable-wrapped": true .

Ich möchte darauf hinweisen, dass eine Sache, die abhängig von der Compiler-Regel und nicht der Tslint-Regel verloren geht, die Möglichkeit ist, nicht verwendete Importe / Variablen automatisch zu reparieren und zu entfernen.

Es sieht so aus, als gäbe es ein großes Interesse daran, diese Regel beizubehalten. Ich ging weiter und mischte #2256 zusammen, was die Ablehnung der Regel aufhebt. Es wird in den integrierten Konfigurationen immer noch nicht empfohlen, aber es wird auf Opt-in-Basis verfügbar sein.

Scheint, als ob Ihre tsconfig "jsx": "react" hat, dann sollte tslint einen Fehler ausgeben, weil der Reaktionsimport fehlt.

@ccorcos "fehlender Import" ist ein völlig anderer Fehler als "keine unbenutzte Variable". tsc sollte dir da draußen helfen.

hört sich gut an. Ich sehe diesen Fehler einfach nicht in VSCode ... : /

Hallo @adidahiya ,

Danke, dass du diese Regel zurückgenommen hast. Die Frage ist, wann wird veröffentlicht? Wie ich sehe ist das noch nicht in 5.1.0 enthalten.

@javier-tarazaga es ist in v5 da, so wie es immer war. es ist jedoch nicht in der tslint:recommended Konfiguration aktiviert.

Hallo @adidahiya ,

Ähm seltsam. Wenn ich die Regel in Version von tslint 5.1.0 einschließe, erhalte ich die folgende Fehlermeldung:

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.

Das liegt daran, dass Sie den falschen Dateinamen verwendet haben. Es ist keine unbenutzte Variable, nicht
no-unused-vars

Am 02.05.2017 09:33 schrieb "Javier Tarazaga" [email protected] :

Hallo @adidahiya https://github.com/adidahiya ,

Ähm seltsam. Wenn ich die Regel in Version von tslint 5.1.0 einschließe, bekomme ich die
folgender fehler,

Es konnten keine Implementierungen für die folgenden in der Konfiguration angegebenen Regeln gefunden werden:
no-unused-vars
Versuchen Sie, TSLint zu aktualisieren und/oder sicherzustellen, dass Sie alle erforderlichen benutzerdefinierten Regeln installiert haben.
Wenn TSLint kürzlich aktualisiert wurde, haben Sie möglicherweise alte Regeln konfiguriert, die bereinigt werden müssen.


Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/palantir/tslint/issues/1481#issuecomment-298527837 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/ALaeKKYydi8vQ8MAhxOwBk3uL02jgzKNks5r1txLgaJpZM4JjuQh
.

Danke für die Warnung! Jetzt stehe ich vor # 2650, also kann ich es nicht wirklich überprüfen.

Ich habe https://github.com/blakeembrey/tslint-config-standard installiert
Gibt es trotzdem diese Warnungen loszuwerden, ich bin mir nicht sicher, ob es sich um Standard oder nur um Tslint handelt

> [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 Haben Sie versucht, --project zu verwenden?

Ja das funktioniert thx

🤖 Piep boop! 👉 TSLint ist veraltet 👈 und Sie sollten zu typescript-eslint wechseln ! 🤖

🔒 Dieses Thema wird gesperrt, um weitere unnötige Diskussionen zu verhindern. Danke schön! 👋

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen