Utilizzo di un'applicazione Rails 4 Vorrei che Rubocop ignorasse le righe con commenti (solo un commento o un codice con un commento di fine riga) quando si verifica se una linea è troppo lunga. C'è un modo per fare questo?Rubocop Linelength: come ignorare le righe con i commenti?
risposta
Penso che l'idea di base qui sia che si vuole applicare la lunghezza della linea, indipendentemente da cosa sia dopo n caratteri. il valore predefinito di 80 caratteri è un certo carico di traffico per le vecchie finestre di terminale che potevano contenere solo quel numero di caratteri. l'unica opzione che ho visto in the code è un'opzione per consentire URL che potrebbero superare il limite di caratteri.
è possibile ignore whole files, credo che non è quello che stai cercando.
C'è un modo per ignorare i poliziotti su base per riga.
C'è anche un modo per farlo tramite il file di configurazione.
Eseguire rubocop --auto-gen-config
e genererà un file che è possibile utilizzare per disattivare le infrazioni.
Il comando fornisce anche un suggerimento su cosa fare per caricare tali opzioni.
Su una linea per riga, è possibile abilitare e disabilitare anche i poliziotti.
# rubocop:disable RuleByName
This is a long line
# rubocop:enable RuleByName
È inoltre possibile eseguire più di una regola alla volta nel codice.
# rubocop:disable BlockComments, AsciiComments
Utilizzando una direttiva in linea, la direttiva diventa valida solo per quella linea , e sarebbe simile a questa:
# Thanks to @jnt30 for the comment!
method(argument) # rubocop:disable SomeRule, SomeOtherRule
Si può leggere una tonnellata di più su RuboCop nella sua official manual.
per trovare tutti i nomi delle regole il suo valore cercando in the rubocop config files
cyberwiz dice - "gestito rubocop -D
quando ho bisogno i nomi delle regole piuttosto che guardare nella documentazione"
quindi più commenti intorno ai commenti \ o/ma otterrà il lavoro finito – phoet
Bene, i commenti possono spiegare la deviazione da uno stile che è stato accettato dalla squadra, quindi questa non è una brutta cosa, giusto? Altrimenti lo si inserisce nel file rubocop.yml e quindi non si tratta di un'eccezione di stile accettata e non è necessario un commento. Il commento dice "intendevo farlo!". Non è affatto male. I commenti – vgoff
non sono codice, quindi il loro controllo è semanticamente diverso e IMO rubocop dovrebbe trattarlo in questo modo. – phoet
E 'possibile definire modelli regex di ignorare automaticamente alcune linee in rubocop.yml
, così si potrebbe scegliere di ignorare tutte le linee che iniziano con un carattere #
:
Metrics/LineLength:
Max: 80
IgnoredPatterns: ['\A#']
Questo potrebbe essere migliorato in modo che "frastagliate" righe di commento (cioè spazi bianchi seguiti da un carattere #
) vengono anche ignorati, se questo è quello che vuoi.
Si noti che questo non tiene conto di righe di codice che finali con un commento, però:
some_code(that_does_something) # This line would NOT be ignored by Rubocop.
Tutte le impostazioni: https://github.com/bbatsov/rubocop/blob/master/config/default.yml – hlcs
È possibile espandere l'espressione regolare includendo le righe che possono avere spazi bianchi: 'IgnorePatterns: ['(\ A | \ s) # '] ' – poustovitss
** Grazie ** @poustovitss. C'è un refuso: dovrebbe essere 'IgnoredPatterns' invece 'IgnorePatterns' (manca la lettera' d '). – Horacio
In questi giorni, l'idea alla base di 80 caratteri non è tanto "cargo cult" per il terminale, c'è ancora un motivo logico per farlo: chiunque può dividere il proprio editor o le finestre IDE come vogliono, e purché siano solo più larghe di 80 caratteri, non avranno bisogno di cambiare la larghezza o l'esperienza di avvolgimento. –
IMO se non si dispone di un IDE che supporta il softwrap, gli strumenti non sono aggiornati. – phoet
80 caratteri è anche abbastanza leggibile, mentre 40 o 200 è meno, quindi è anche una cosa usabilità –