Tslint: Ignorer une ligne avec un seul commentaire

Créé le 2 juin 2014  ·  31Commentaires  ·  Source: palantir/tslint

Existe-t-il un moyen d'ignorer une seule ligne, comme dans jshint ?
J'ai essayé // tslint ignore:line mais cela ne semble pas fonctionner.

P2 Fixed Accepting PRs Feature Request

Commentaire le plus utile

Pour quiconque ici pour trouver une solution de contournement

/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file

par exemple
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

Tous les 31 commentaires

malheureusement, nous n'avons pas encore une telle chose. vous devez activer et désactiver la ligne explicitement.

Comment désactiver une ligne ?

Pour quiconque ici pour trouver une solution de contournement

/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file

par exemple
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

y a-t-il eu une enquête sur la mise en œuvre d'une fonctionnalité similaire à celle décrite ci-dessus ?

@patsissons quelle fonctionnalité exactement ? Il est actuellement possible d'activer/désactiver une seule ligne avec deux commentaires.

la fonctionnalité serait une désactivation de ligne moins verbeuse. ESLint a plusieurs méthodes pour désactiver les règles sur une seule ligne.

Par exemple,

// eslint-disable-next-line rule-name
var x; // eslint-disable-line rule1 rule2

La méthode d'emballage est excellente en tant que redondance pour les désactivations de règles complexes, mais en ligne (ou à la ligne suivante) a tendance à laisser le code moins pollué (c'est mon avis bien sûr, mais probablement pas si déraisonnable).

C'est bruyant :

/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

Ceci est vraiment mieux:

var x; // eslint-disable-line rule1 rule2

Ou même simplement :

var x; // tslint:disable

Le fait qu'il s'agisse d'un commentaire de ligne impliquerait que cela ne désactiverait que cette ligne très bien, je pense.

Ou au pire :

var x; // tslint:disable-line

accepter les PR pour cela. voici un changement récent quelque peu connexe qui autorisait les commentaires // au lieu de /* pour la désactivation (deux commentaires sont toujours requis): https://github.com/palantir/tslint/pull/1134

Je vais essayer d'y arriver ce soir, si ce n'est pas trop difficile, j'espère un PR ce soir aussi

Suivons de près ESLint ici :

someCode(); // tslint:disable-line

// tslint:disable-next-line
someCode();

et

someCode(); // tslint:disable-line:rule1 rule2

// tslint:disable-next-line:rule1
someCode();

C'est précisément ce que je voudrais réaliser :+1:

cependant, juste pour plus de clarté, ESLint n'utilise pas de deux-points, leur style est le suivant :

// eslint-disable-next-line rule1, rule2
someCode();

Je suppose que vous préféreriez que nous nous en tenions au style TSLint que vous avez inclus ci-dessus (deux points et aucune règle de séparation par virgules).

👍 Restons-en au style TSLint pour plus de cohérence

Cela fonctionne maintenant et je suis en train de faire un nettoyage de commit avant de créer le PR. La stratégie consistait à convertir les variantes -line et -next-line en leurs commutateurs de commentaires entièrement exprimés équivalents. Cela se fait en suivant la position de début de la ligne (pour les commutateurs -line ) et en effectuant une analyse anticipée de la fin de la ligne suivante (pour les commutateurs -next-line ). Ceux-ci semblent fonctionner assez bien et ont des effets secondaires minimes puisqu'ils agissent simplement comme un alias pour le format plus détaillé.

Juste une note avant de mettre mon PR en ordre, en raison du fonctionnement du code d'intervalle désactivé, vous ne pourrez pas faire quelque chose comme ça

// tslint:disable-next-line:quotemark variable-name
var AAAaA = 'test' // tslint:enable-line variable-name

Honnêtement, je ne m'attends jamais à ce que quelqu'un fasse quelque chose comme ça, mais je voulais juste le noter ici. Vous pouvez toujours faire une imbrication standard comme celle-ci

// tslint:disable
var AAAaA = 'test' // tslint:enable-line:quotemark
// tslint:enable-next-line:variable-name
var AAAaA = 'test'
// tslint:enable

Question sur l'implémentation, est-ce que ça marche ?

/**
 * this is a very long line and violate max-line-length. // tslint:disable-line:max-line-length
 */

Non, les commentaires du switch ne sont pas analysés comme ça, ils doivent être correctement formatés. Je crois que dans votre exemple, vous placeriez le commentaire de désactivation d'une seule ligne en dehors du commentaire multiligne et cela devrait fonctionner comme prévu.

Merci pour les éclaircissements, j'ai compris.

@lijunle vient de revoir votre exemple, je pense que mon explication était en fait quelque peu incorrecte. Je ne pense pas que vous puissiez atteindre le résultat escompté avec des désactivations sur une seule ligne. Je pense que l'analyseur ne serait pas en mesure de revenir en arrière pour désactiver correctement l'ensemble du commentaire multiligne. pour désactiver une règle dans un commentaire sur plusieurs lignes, vous devez envelopper le commentaire avec une paire de commutateurs.

aucun de ces travaux ne fonctionne
parlez-vous de propositions de fonctionnalités ou de celles déjà implémentées ?
dur à suivre

@phil123456 https://github.com/palantir/tslint#rule -flags

// tslint:disable-next-line <optional rule identifier>
var foo = 123;

Putain d'enfer. Ni les mots « supprimer » ni « ignorer » n'apparaissent dans cette documentation. Je ne peux pas croire combien de recherches sur Google ont été nécessaires pour m'amener à ce problème, lisez tout ce qui précède, pour découvrir que c'est une fonctionnalité prise en charge et documentée, mais les mots-clés appropriés ne figurent pas dans la documentation, il est donc impossible à Google. Devez-vous cloner l'intégralité du référentiel et soumettre un PR pour cela, ou existe-t-il un moyen plus rapide de suggérer des correctifs aux fichiers .md ?

@pbarranis, vous pouvez créer un nouveau ticket avec cela en tant que demande de fonctionnalité. S'ils ne font pas le changement, alors faire un PR pourrait être la prochaine étape.

Au fait, vous pouvez aussi le faire sur la même ligne :

console.log("poop"); // tslint:disable-line no-console

Au moins depuis [email protected].

Cela ne fonctionne pas avec des règles comme ordered-imports

//@ts-ignore
https://palantir.github.io/tslint/rules/

Malheureusement, cette page ne montre que comment en interdire l'utilisation. Il ne montre pas comment l'utiliser correctement ou n'explique pas combien tsLint ignore lorsque vous l'utilisez. Je ne sais pas pourquoi ce n'est pas mentionné sur cette page qui explique comment supprimer les règles https://palantir.github.io/tslint/usage/rule-flags/
Et je suis d'accord avec le commentaire ci-dessus qui demandait POURQUOI cette page ne mentionne-t-elle pas les mots « supprimer » ou « ignorer » afin qu'il puisse être facilement trouvé lors de l'utilisation de Google ?
Pour info, cette page indique maintenant que TSLint est en fin de vie cette année : https://github.com/palantir/tslint#tslint -rule-flags

Ah, tslint est finalement (pas encore) fusionné avec eslint, donc c'est bien, je suppose.

Le fait est que maintenant tslint prend en charge la fonction ignorer la ligne suivante.

Exemple:

// tslint:disable-next-line

Ou

// tslint:disable-next-line:rule1 rule2 rule3

Pour plus de détails et d'exemples, voir https://palantir.github.io/tslint/usage/rule-flags/

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