2016-07-07 15 views
6

我有一个编码标准,暗示三元组的初始参数应该总是在括号内,而不管表达式如何。如何使用RuboCop强制执行三元括号?

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

以下应被视为违规:

例如foo = thing.baz? ? [] : thing.bar

是否有可能与Rubocop的内置警察做到这一点,或者这也需要定制警察。如果是这样,我将如何实现它?

+0

AFIAK,开箱即用没有这样的警察。在[rubocop测试](https://github.com/nevir/rubocop-rspec/tree/master/lib/rubocop/cop/rspec)中有关于如何创建自定义警察的示例和简要文档。 – mudasobwa

回答

12

我看到你的问题,所以我继续实施警察为您服务。这个名字是Style/TernaryParentheses,并且希望EnforcedStyle选项require_parentheses

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

你可以开始使用它,现在,通过把这个在您的Gemfile(不是默认):

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

,或者你可以等待0.42.0版本。

+0

太棒了。非常感谢你! – qnm

+0

不用担心。不要犹豫,在GitHub仓库中提交错误报告或功能请求。这一切都非常有帮助。 :-) – Drenmi