Tslint: améliorations de la règle de retrait

Créé le 19 août 2015  ·  37Commentaires  ·  Source: palantir/tslint

Semblable à ESLint , nous devrions pouvoir appliquer une indentation à 2 ou 4 espaces via des options comme ceci :

  • [x] [true, "spaces", 2]
  • [x] [true, "spaces", 4]

De plus, ce serait bien d'avoir une option "detect" (comme suggéré dans #122) qui essaie de deviner le style d'indentation dans un fichier et d'assurer la cohérence :

  • [ ] [true, "detect"]
P1 Fixed Enhancement

Commentaire le plus utile

@dimitriy-k #2723 vient de fusionner, ce sera dans la prochaine version.

Tous les 37 commentaires

+1

+1 pour l'application du nombre d'espaces.

+1

Cela ne fonctionnerait-il que si l'indentation est divisible par le nombre d'espaces configurés ?

{
    theObject.something()
             .more(); // 13 spaces.
}

La méthode ci-dessus (aligner les points) ne serait pas prise en charge ?

@glen-84 Je vois deux possibilités :

  • Une vérification ligne par ligne de l'indentation (où votre exemple ne serait pas autorisé
  • Vérification de l'indentation déclaration par déclaration. Étant donné que dans votre exemple, theObject.something().more() est une seule instruction, il ne vérifierait que le niveau d'indentation au début de celle-ci.

Je pense qu'ils ont tous les deux des avantages et des inconvénients, mais le second est probablement préféré ici.

:+1:

+1
@JKillian -> Je voterais pour l'option #2 où les déclarations sont vérifiées, pas toutes les lignes.

+1 option 2, vérification instruction par instruction

@JKillian Merci. La deuxième option semble bonne. =)

Edit : j'ai changé d'avis .

+1 option 1

Un bon moyen est celui d'ESLINT http://eslint.org/docs/rules/indent

+9000 SSJ3
S'il vous plaît, les gars, implémentez l'option de retrait à 4 espaces dès que possible. J'ai beaucoup commencé à programmer en tapuscrit et le retrait par défaut de 2 espaces me fait très mal. Pour certaines personnes, il est vraiment difficile de voir le niveau de retrait d'un code avec seulement 2 espaces...

@radarsu, vous voudrez peut-être essayer d'utiliser .editorconfig pour le moment.

@radarsu À l'heure actuelle, la règle d'indentation détermine simplement si vous avez une erreur d'indentation en fonction de la façon dont votre code s'aligne sur l'instruction précédente. Vous pouvez utiliser l'indentation de quatre espaces et rendre la règle heureuse (en fait, c'est ce que fait le code source de TSLint)

@JKillian, avez-vous une idée de la difficulté à résoudre ce problème ? J'aimerais commencer à appliquer la taille du retrait. Je suis prêt à le pirater si ce n'est pas trop long (je n'ai que peu de temps au cours de la semaine prochaine).

Difficile de dire à quel point ce serait difficile - je pense que ce ne serait pas simple au moins haha. Allez-y quand même !

@mcriss @strike-sbolel Veuillez arrêter d'ajouter des commentaires +1 .

On dirait que des efforts similaires sont déployés ici https://github.com/buzinas/tslint-eslint-rules/issues/74

J'ai changé d'avis , car l'option 2 autoriserait un code comme :

{
    theObject.something()
             .more() // 13 spaces.
           .wrong()
                    .moreWrong();
}

Dans un monde idéal, nous utiliserions l'option 1 avec un paramètre pour autoriser (ou imposer) le positionnement des lignes "enveloppées" sous la dernière période de la ligne précédente.

{
    theObject.something()
             .more()  // 13 spaces.
             .right() // Must be the same as above now, because the previous line used this indentation mode.
             .moreRight();
}

Ou:

{
    theObject.something()
        .more() // (4 x 2) spaces.
        .right()
        .moreRight();
}

Pouvons-nous publier une mise à jour s'il vous plaît?

@owais les améliorations n'ont pas encore été implémentées dans le noyau TSLint. Ce lien est vers un référentiel externe avec des règles personnalisées.

Oh. Je ne savais pas que je regardais un autre repo. :) Merci pour le lien. Je pense que je pourrais l'utiliser.

@adidahiya Est-ce toujours quelque chose d'exceptionnel et cela vaut-il la peine d'ouvrir un PR ? Ou serait-il préférable d'utiliser les règles personnalisées auxquelles vous vous êtes lié ?

@pudgeball serait certainement heureux d'accepter un PR (comme indiqué par l'étiquette)

notez que #2723 ne résout pas ce problème. Il corrige les onglets -> x espaces et x espaces -> onglets, mais ne corrige pas x espaces -> y espaces

toujours pas de mise à jour sur la taille du retrait ?... la demande date de 2015

@dimitriy-k #2723 vient de fusionner, ce sera dans la prochaine version.

Comment s'appellera cette règle ? ??

@dolanmiu ce n'est pas une nouvelle règle. Il est mis en œuvre exactement comme indiqué dans la description du problème d'origine. Cliquez simplement sur le PR que j'ai lié.

@adidahiya J'utilise la dernière version actuelle de tslint 5.3.2

Et en utilisant ce qui suit :

    "indent": [
      true,
      "spaces",
      4
    ],

J'ai un fichier qui contient 2 tous les 2 espaces, mais il ne l'a pas détecté ! Est-ce que je fais quelque chose de mal ou y a-t-il un bug ?

@dolanmiu ouais ça ressemble à un nouveau problème, j'ai aussi remarqué que #2723 ne fonctionnait pas comme je m'y attendais. J'ai déposé https://github.com/palantir/tslint/issues/2814

les mises à jour?

"indent": [true, "spaces", 4] ne fonctionne pas pour moi

@ liul85 essayez d'installer tslint-eslint-rules et utilisez le terIndentRule

@leocaseiro merci pour le partage, je vais essayer.

Ne fonctionne toujours pas dans tslint 5.11.0

"indent": [true, "spaces", 4] ne fonctionne toujours pas...

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