2016-07-07 66 views
6

Ho uno standard di codifica che suggerisce che l'argomento iniziale di un ternario dovrebbe sempre essere tra parentesi, indipendentemente dall'espressione.Come posso applicare le parentesi ternarie con RuboCop?

E.g. foo = (thing.baz?) ? [] : thing.bar

Il seguente dovrebbe essere considerato un'infrazione:

Ad es foo = thing.baz? ? [] : thing.bar

È possibile ottenere questo risultato con i Cop copia integrati di Rubocop, oppure è necessario un Cop personalizzato. Se sì, come lo implementerei?

+0

AFIAK, non c'è un tale poliziotto fuori dalla scatola. In [test rubocop] (https://github.com/nevir/rubocop-rspec/tree/master/lib/rubocop/cop/rspec) ci sono esempi e brevi documenti su come creare poliziotti personalizzati. – mudasobwa

risposta

12

Ho visto la tua domanda, quindi sono andato avanti e ho implementato il poliziotto per te. Il nome è Style/TernaryParentheses, e l'opzione EnforcedStyle che si desidera è require_parentheses

# .rubocop.yml 
Style/TernaryParentheses: 
    Enabled: true 
    EnforcedStyle: require_parentheses 

È possibile iniziare ad usarlo subito, mettendo questo nel tuo Gemfile (non il valore predefinito.):

gem 'rubocop', git: 'git://github.com/bbatsov/rubocop.git' 

o può aspettare la versione 0.42.0.

+0

È fantastico. Grazie mille! – qnm

+0

Nessun problema. Non esitare a presentare segnalazioni di bug o richieste di funzionalità nel repository di GitHub. È tutto molto utile. :-) – Drenmi

Problemi correlati