Rubocop:是否可以向 Metrics/AbcSize cop 添加排除项?
Rubocop: Is it possible to add exclusions to Metrics/AbcSize cop?
让我们考虑以下class:
class App
def call
# ...
end
private
def foo
# ...
end
def bar
# ...
end
end
当 Assignment Branch Condition size
高于 15 时,是否可以将所有方法的 rubocop
配置为 'complain' 关于 Metrics/AbcSize
,call
方法除外?
对于 call
方法,仅当 Assignment Branch Condition size
高于 30 时才应 'complain'。
提前致谢。
RuboCop 不支持这个。您不能对代码的不同部分设置不同的限制。
Andy Waite 是正确的,默认情况下没有内置,但如果需要,您可以为这些创建自己的自定义警察。我从来没有亲自做过,但是这篇文章似乎解释得很好:
https://medium.com/@DmytroVasin/how-to-add-a-custom-cop-to-rubocop-47abf82f820a
如果我要尝试一下,我会看一下 Metrics/ABcSize 的源代码并模仿它的行为,除非遇到方法名称 #call
。
源代码在这里:https://github.com/rubocop-hq/rubocop/blob/master/lib/rubocop/cop/metrics/abc_size.rb
这个怎么样:
def a
...
end
# rubocop:disable Metrics/AbcSize
def call
...
end
# rubocop:enable Metrics/AbcSize
def b
...
end
随着功能对象使用的增加,我看到这个请求越来越多,所以我去实现了一个 IgnoredMethods
三方法复杂警察的配置选项:
Metrics/AbcSize
Metrics/CyclomaticComplexity
Metrics/PerceivedComplexity
pull request 已经合并,所以随着下一个版本的 RuboCop(可能是 0.81.0)的发布,您将能够做到这一点:
# rubocop.yml
Metrics/AbcSize:
IgnoredMethods:
- 'call'
请注意,这将在整个代码库中禁用所有 #call
方法的 cop,包括 class 方法。
我知道这与您正在寻找的略有不同,但对于大多数意图和目的而言,禁用警察与将最大值设置为 30 一样好。;-)
让我们考虑以下class:
class App
def call
# ...
end
private
def foo
# ...
end
def bar
# ...
end
end
当 Assignment Branch Condition size
高于 15 时,是否可以将所有方法的 rubocop
配置为 'complain' 关于 Metrics/AbcSize
,call
方法除外?
对于 call
方法,仅当 Assignment Branch Condition size
高于 30 时才应 'complain'。
提前致谢。
RuboCop 不支持这个。您不能对代码的不同部分设置不同的限制。
Andy Waite 是正确的,默认情况下没有内置,但如果需要,您可以为这些创建自己的自定义警察。我从来没有亲自做过,但是这篇文章似乎解释得很好:
https://medium.com/@DmytroVasin/how-to-add-a-custom-cop-to-rubocop-47abf82f820a
如果我要尝试一下,我会看一下 Metrics/ABcSize 的源代码并模仿它的行为,除非遇到方法名称 #call
。
源代码在这里:https://github.com/rubocop-hq/rubocop/blob/master/lib/rubocop/cop/metrics/abc_size.rb
这个怎么样:
def a
...
end
# rubocop:disable Metrics/AbcSize
def call
...
end
# rubocop:enable Metrics/AbcSize
def b
...
end
随着功能对象使用的增加,我看到这个请求越来越多,所以我去实现了一个 IgnoredMethods
三方法复杂警察的配置选项:
Metrics/AbcSize
Metrics/CyclomaticComplexity
Metrics/PerceivedComplexity
pull request 已经合并,所以随着下一个版本的 RuboCop(可能是 0.81.0)的发布,您将能够做到这一点:
# rubocop.yml
Metrics/AbcSize:
IgnoredMethods:
- 'call'
请注意,这将在整个代码库中禁用所有 #call
方法的 cop,包括 class 方法。
我知道这与您正在寻找的略有不同,但对于大多数意图和目的而言,禁用警察与将最大值设置为 30 一样好。;-)