2016-07-07 7 views
6

Ich habe einen Kodierungsstandard, der vorschlägt, dass das Anfangsargument zu einem Ternär immer innerhalb der Klammer sein sollte, unabhängig vom Ausdruck.Wie kann ich ternäre Klammern mit RuboCop erzwingen?

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

Folgendes sollte ein Verstoß betrachtet werden:

Z.B. foo = thing.baz? ? [] : thing.bar

Ist es möglich, dies mit den eingebauten Cops von Rubocop zu erreichen, oder erfordert dies einen kundenspezifischen Cop. Wenn ja, wie würde ich es umsetzen?

+0

AFIAK, es gibt keinen solchen Cop out of the box. In [rubocop tests] (https://github.com/nevir/rubocop-rspec/tree/master/lib/rubocop/cop/rspec) gibt es Beispiele und kurze Dokumente zum Erstellen benutzerdefinierter Cops. – mudasobwa

Antwort

12

Ich sah Ihre Frage, also ging ich voran und implementierte den Polizisten für Sie. Der Name ist Style/TernaryParentheses und die EnforcedStyle Option möchten Sie ist require_parentheses

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

Du kannst es jetzt verwendet wird, durch diese Gemfile in Putten (nicht die Standardeinstellung.):

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

oder Sie kann auf die 0.42.0 Freigabe warten.

+0

Das ist großartig. Vielen Dank! – qnm

+0

Keine Sorgen. Zögern Sie nicht, Fehlerberichte oder Feature Requests im GitHub Repo einzureichen. Es ist alles sehr hilfreich. :-) – Drenmi