56 votes

Pourquoi les nouvelles erreurs JSLint ont-elles été "introduites dans des espaces, et non des tabulations"?

J'ai été de valider mon code JavaScript à l'aide JSLint pour environ 2 ans maintenant, et de temps en temps il y a des règles qui changent. En général quand JSLint introduit une nouvelle règle, il y a une case pour ignorer cette règle lors de l'analyse, ou si vous choisissez de ne pas l'ignorer alors pour faire votre code conforme à elle.

Comme je l'ai été l'exécution de mon JSLint validation aujourd'hui, cependant, j'ai couru dans ces deux nouvelles erreurs:

Utiliser les espaces, pas d'onglets.

Ce n'est pas le "mélange des tabulations et des espaces d'erreur". Je suis en utilisant uniquement les onglets. C'est récemment d'une version modifiée de "mélange des tabulations et des espaces", qui interdit maintenant les onglets en général.

Et:

Dangereux personnage.

*/

Dangereux personnage.

_const: {

Il n'y a pas de nouvelles options pour ignorer. Je ne comprends pas ce qui est dangereux à propos de la fermeture d'un bloc de commentaire, pourquoi il considère que _const: { comme dangereux, quand j'ai nomen: true, (bancales _ dans les identifiants) ou pourquoi devrais-je être basculant soudain d'espaces en tabulations, quand j'ai encore la configuration sur l'indentation de 4 espaces d'un onglet.

Quelqu'un aurait-il une idée de pourquoi ceux qui ont été introduites au moins comment faire de JSLint ignorer ces nouvelles règles?

Mise à jour: L' Messy White Space option travaux autour de la question, mais il serait la cause d'un comportement inattendu:

if (condition) { 
  //            ^-- there is a space but it won't indicate an error

72voto

James Allardice Points 81162

Eh bien, il ressemble à Douglas Crockford a juste fait un ensemble beaucoup plus de personnes passent à JSHint. Jetez un oeil à ce commit.

Le "Mélange d'espaces et de tabulations" erreur a été supprimé et un nouveau "Utilisation des espaces, pas d'onglets" erreur a été ajoutée à sa place. A côté de cela, il y a un petit changement de diff qui montre la cause de cette. La ligne suivante (commentaire):

at = source_row.search(/ \t/);
//                      ^ Space

a été remplacé par ceci:

at = source_row.search(/\t/);
//                      ^ No space!

Suite à cette recherche, il y a un if déclaration. Si la condition est évaluée true, "l'Utilisation des espaces, pas d'onglets" avertissement est émis. Voici cette déclaration:

if (at >= 0) {
    warn_at('use_spaces', line, at + 1);
}

J' espère que c'est juste un peu de surveillance par Crockford. Comme vous pouvez le voir, JSLint est maintenant à recueillir cet avertissement si vous utilisez un caractère de tabulation n'importe où. Unfortuately, ses messages de validation sont complètement inutiles, et la documentation ne semble pas avoir été mis à jour, donc je ne peux pas faire autre chose que de spéculer sur les raisons de ce changement.

Je vous suggère d'abandonner JSLint et de passer à JSHint droit maintenant.

12voto

mathius1 Points 704

Vous pouvez supprimer l’erreur en cliquant sur l’option "espace blanc désordonné".

6voto

TyMayn Points 286

En fonction de votre éditeur/IDE, vous pouvez ajuster la façon dont ONGLET œuvres.

Par exemple, j'utilise Sublime Text. Près du coin inférieur droit, il ya un Onglet Taille : 4.

J'ai cliqué sur et le 'Retrait en Utilisant des Espaces".

Cette mise à jour de tous mes Onglets à utiliser des espaces et des JSLint erreurs disparaissent. J'ai essayez d'utiliser aussi peu d'options que possible avec JSLint que je veux que mon code est bien structuré.

J'utilise aussi JSFormat, qui va onglet sur la base de mes éditeurs paramètres, de sorte que chaque fois que je suis fait, je lance mon JSFormat, puis JSLint. Pas d'erreurs = garçon heureux!

Espérons que cela aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X