Tslint: Commencer à déprécier la règle de non-variable inutilisée

Créé le 13 août 2016  ·  30Commentaires  ·  Source: palantir/tslint

Je viens de remarquer ces nouvelles vérifications du compilateur dans la v2.0 : --noUnusedParameters et --noUnusedLocals . Celles-ci rendent essentiellement la règle no-unused-variable obsolète. Puisqu'il s'agit d'une règle fondamentale, je ne pense pas que nous devrions la supprimer tout de suite.

Proposition:

  • supprimer no-unused-variable de tslint:latest & tslint:recommended dans la v4.0
  • marquer la règle comme obsolète dans la v4.0

    • peut-être dans le message d'échec ?

  • supprimer complètement l'implémentation de la règle dans TSLint v5.0
Won't Fix Breaking Change

Commentaire le plus utile

Un petit retour. Avoir ces règles dans tslint est vraiment pratique car vous obtenez l'avertissement linter, mais votre code compile toujours. Personnellement, je trouve assez ennuyeux d'avoir des échecs du compilateur à cause d'une variable, d'un paramètre ou d'une importation inutilisés, en particulier lors d'un changement de code rapide comme la refactorisation ou l'essai d'une idée.

Tous les 30 commentaires

Une bonne fonctionnalité ici est que le compilateur fournit un opt-out : donnez à un nom de variable un trait de soulignement en tête et le compilateur ne le signalera pas. Cela devrait faciliter la tâche des personnes qui souhaitent activer les vérifications de conformité, mais qui peuvent avoir un ou deux cas extrêmes qu'elles ne souhaitent pas modifier.

@JKillian Cela ne s'applique qu'aux paramètres, n'est-ce pas?

@ Glen-84 - bonne prise, je pense que vous avez raison.

@adidahiya juste pour noter que --noUnusedLocals et no-unused-variable fonctionnent assez différemment.

Le --noUnusedLocals vérifie également les propriétés de la classe, semble-t-il (à la version TS 2.0.2).

@charsleysa ouais, la mise en œuvre est légèrement différente. Je pense que les options du compilateur sont meilleures que la règle TSLint, c'est pourquoi je veux la privilégier. Comme indiqué dans le message d'origine, nous le supprimerons lentement du noyau TSLint.

Je pense que vous devriez le supprimer dans la version 4. Il devrait y avoir de nombreuses versions de prévisualisation où tous les développeurs devraient voir l'avertissement de dépréciation. Et vous avez de toute façon supprimé d'autres règles en faveur des options du compilateur.

PD : Dans la version dev-1, je pense que c'est un paramètre recommandé.

Juste comme un peu de commentaires, j'ai rencontré ce problème ce soir et même après avoir trouvé ce problème, il m'a fallu un peu de temps pour comprendre que les --noUnusedLocals et --noUnusedParameters étaient des configurations tsc et non tslint. Il peut être utile de le préciser dans le message d'erreur.

@ryanguill merci pour les commentaires. J'ai commis une modification qui clarifie le message

Un petit retour. Avoir ces règles dans tslint est vraiment pratique car vous obtenez l'avertissement linter, mais votre code compile toujours. Personnellement, je trouve assez ennuyeux d'avoir des échecs du compilateur à cause d'une variable, d'un paramètre ou d'une importation inutilisés, en particulier lors d'un changement de code rapide comme la refactorisation ou l'essai d'une idée.

Le compilateur gère cela d'une meilleure manière, je pense, et je vous soutiens dans le sens où cela ne devrait pas être tout à fait la compilation à cause de cela, mais si vous utilisez quelque chose comme webpack, par exemple, les erreurs vont être lancées mais la compilation ne s'arrêtera pas.

À @zubivan

Accepter. Je préfère garder cet avertissement au stade peluche. Mon flux de travail est :

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

Je peux modifier rapidement n'importe quel code sale et tester d'abord les résultats, puis remplir la garde de tslint. Vous forcer à écrire du code propre avant tout test est vraiment ennuyeux.

À @michaeljota

Bien que je préfère afficher l'avertissement après le test, existe-t-il un exemple de webpack pour atteindre l'objectif ?

Je me demande si TSLint pourrait simplement exécuter le compilateur, analyser et afficher ses avertissements en tant qu'avertissements TSLint? cela éviterait à TSLint d'avoir à maintenir une implémentation de la règle, mais permettrait aux utilisateurs de toujours pouvoir utiliser les commentaires utiles de désactiver / ignorer TSLint, entre autres avantages.

@xareelee dans mon profil, vous pouvez voir une configuration Angular 2 avec compilation TS sans lancer.

Je ne comprends pas pourquoi ceux-ci font partie du compilateur. Ils sont purement stylistiques, n'affectant pas l'exactitude du code, ils semblent donc plus naturels en tant qu'options de linter. Je veux aussi avoir la possibilité de remplacer ces avertissements dans certains cas, ce que je peux faire avec tslint mais pas avec tsc.

Pourquoi ceux-ci font partie du compilateur maintenant, ce n'est pas quelque chose à discuter ici. Je ne pense pas qu'ils liront cette règle, pour des raisons déjà exposées.

Pour tous ceux qui recherchent une solution à ce sujet parce qu'ils ne veulent pas utiliser les options du compilateur en raison du fait qu'ils empêcheraient un développement local rapide (commenter du code, etc. échouerait la transpilation), vous pouvez faire quelque chose comme cette:

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;

dans votre propre fichier de règles noUnusedVariableWrapped.js puis activez-le via "no-unused-variable-wrapped": true .

Je voudrais noter qu'une chose perdue en fonction de la règle du compilateur et non de la règle tslint est la possibilité de corriger automatiquement et de supprimer les importations/variables inutilisées.

On dirait qu'il y a beaucoup d'intérêt à maintenir cette règle. Je suis allé de l'avant et j'ai fusionné # 2256, ce qui annule la règle. Il ne sera toujours pas encouragé dans les configurations intégrées, mais il sera disponible sur une base opt-in.

Il semble que si votre tsconfig a "jsx": "react" , alors tslint devrait générer une erreur pour avoir manqué l'importation de réaction.

@ccorcos "importation manquante" est une erreur entièrement différente de "pas de variable inutilisée". tsc devrait vous aider là-bas.

ça a l'air bien. Je ne vois tout simplement pas cette erreur dans VSCode... :/

Bonjour @adidahiya ,

Merci d'avoir repris cette règle. La question est, quand sera publié? Comme je peux le voir n'est pas encore inclus dans 5.1.0.

@javier-tarazaga il est là dans la v5, comme il l'a toujours été. il n'est cependant pas activé dans la configuration tslint:recommended .

Bonjour @adidahiya ,

Euh bizarre. Lorsque j'inclus la règle dans la version de tslint 5.1.0, j'obtiens l'erreur suivante,

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.

C'est parce que vous avez utilisé le mauvais nom de fichier. Ce n'est pas une variable inutilisée, pas
pas de variables inutilisées

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

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

Euh bizarre. Lorsque j'inclus la règle dans la version de tslint 5.1.0, j'obtiens le
erreur de suite,

Impossible de trouver des implémentations pour les règles suivantes spécifiées dans la configuration :
pas de variables inutilisées
Essayez de mettre à niveau TSLint et/ou assurez-vous que toutes les règles personnalisées nécessaires sont installées.
Si TSLint a été récemment mis à jour, vous avez peut-être configuré d'anciennes règles qui doivent être nettoyées.


Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/palantir/tslint/issues/1481#issuecomment-298527837 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ALaeKKYydi8vQ8MAhxOwBk3uL02jgzKNks5r1txLgaJpZM4JjuQh
.

Merci pour l'information! Maintenant, je suis face à # 2650, donc je ne peux pas vraiment le vérifier.

J'ai installé https://github.com/blakeembrey/tslint-config-standard
Existe-t-il un moyen de se débarrasser de ces avertissements, je ne sais pas s'il est lié à la norme ou simplement à tslint

> [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 Avez-vous essayé d'utiliser --project ?

Ouais ça marche merci

🤖 Bip boop ! 👉 TSLint est obsolète 👈 et vous devriez passer à typescript-eslint ! 🤖

🔒 Ce problème est verrouillé pour éviter d'autres discussions inutiles. Merci! 👋

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

mrand01 picture mrand01  ·  3Commentaires

DanielKucal picture DanielKucal  ·  3Commentaires

jacob-robertson picture jacob-robertson  ·  3Commentaires

zewa666 picture zewa666  ·  3Commentaires

CSchulz picture CSchulz  ·  3Commentaires