web-dev-qa-db-fra.com

Rubocop Linelength: Comment ignorer les lignes avec des commentaires?

Utiliser une Rails 4 je voudrais que Rubocop ignore les lignes avec des commentaires (juste un commentaire ou du code avec un commentaire de fin de ligne)) lors de la vérification si une ligne est trop longue. Y a-t-il un moyen pour faire ça?

85
Twiek

Il y a un moyen d'ignorer les flics ligne par ligne.

Il existe également un moyen de le faire via un fichier de configuration.

Courir rubocop --auto-gen-config et il générera un fichier que vous pourrez utiliser pour désactiver les infractions.

La commande indique également ce qu'il faut faire pour charger ces options.

Ligne par ligne, vous pouvez également activer et désactiver les flics.

# rubocop:disable RuleByName
This is a long line 
# rubocop:enable RuleByName

Vous pouvez également appliquer plusieurs règles à la fois dans votre code.

# rubocop:disable BlockComments, AsciiComments

En utilisant une directive inline, la directive devient valide uniquement pour cette ligne, et ressemblerait à ceci:

# Thanks to @jnt30 for the comment!
method(argument) # rubocop:disable SomeRule, SomeOtherRule

Vous pouvez en savoir plus sur RuboCop dans son manuel officiel .

Pour trouver tous les noms de règles qui valent la peine d’être cherchés dans les fichiers de configuration rubocop

cyberwiz dit - "lancez rubocop -D lorsque j’ai besoin des noms de règles plutôt que de consulter la documentation. " Update : il s’agit du comportement par défaut sans le drapeau.

156
vgoff

Il est possible de définir des modèles regex pour ignorer automatiquement certaines lignes de rubocop.yml, vous pouvez donc choisir d’ignorer toutes les lignes commençant par un # personnage:

Metrics/LineLength:
  Max: 80
  IgnoredPatterns: ['\A#']

Cela pourrait être amélioré de manière à ce que les lignes de commentaire "en retrait" (c'est-à-dire des espaces suivis d'un # _ caractère) sont également ignorés, si c'est ce que vous voulez.

Notez que cela ne prend pas en compte les lignes de code qui fin avec un commentaire, bien que:

some_code(that_does_something) # This line would NOT be ignored by Rubocop.
27
GoBusto

je pense que l’idée de base ici est que vous voulez appliquer la longueur de ligne, peu importe l’après n caractères. La valeur par défaut de 80 caractères correspond à un culte du fret pour les anciennes fenêtres de terminal ne pouvant contenir que ce nombre de caractères. la seule option que j'ai vue dans le code est une option permettant d'autoriser les URL pouvant dépasser la limite de caractères.

vous pouvez ignorer les fichiers entiers , je suppose que ce n'est pas ce que vous recherchez.

6
phoet

Vous pouvez utiliser le commentaire suivant avec rubocop pour ignorer une règle spécifique:

# rubocop:disable Metrics/LineLength
def this_could_be_a_very_long_line_that_extends_forever_into_infinity
end
# rubocop:enable Metrics/LineLength

Vous pouvez également ignorer des fichiers entiers en les ajoutant à .rubocop.yml:

AllCops:
  Exclude:
    - path/to/file.rb
4
Rudolf Olah