我正在开发一个工具来分析rubocop在代码库的某些区域中是如何使用(启用/禁用)和修复(排除在todo列表中)的。考虑到众多的配置选项,我 * 认为 * 我正在寻找一种方法,以编程方式询问RuboCop是否给定一个文件或文件夹,启用了某个规则,以及是否通过todo排除该文件。是否有一个API用于此?
到目前为止,我已经在https://github.com/rubocop/rubocop中进行了探索,看看是否能找到一个API.我在google和so上搜索了一下,什么都没找到。
我正在开发一个工具来分析rubocop在代码库的某些区域中是如何使用(启用/禁用)和修复(排除在todo列表中)的。考虑到众多的配置选项,我 * 认为 * 我正在寻找一种方法,以编程方式询问RuboCop是否给定一个文件或文件夹,启用了某个规则,以及是否通过todo排除该文件。是否有一个API用于此?
到目前为止,我已经在https://github.com/rubocop/rubocop中进行了探索,看看是否能找到一个API.我在google和so上搜索了一下,什么都没找到。
1条答案
按热度按时间2exbekwf1#
我不认为有你想要的公共接口。Runner中的
mobilize_team
方法示例化了一个RuboCop::Cop::Team
。team对象决定在这个roundup_relevant_cops
方法中使用的cop。这两个方法都是私有的,但是您可以使用send
来解决这个问题。例如,假设我们有一个项目,其中包含两个名为
test_one.rb
和test_two.rb
的文件。.rubocop_todo.yml
表示仍需要处理其中一个文件:.rubocop.yml
配置说明我们只关心Style/FrozenStringLiteralComment
:我们可以看到RuboCop将应用于每个文件的警察,如果我们这样做:
这将显示以下输出:
由于
enable_cop?
中的这种特殊情况,Lint/Syntax
cop始终处于启用状态。由于test_one.rb
不包括在TODO列表中,因此它是唯一符合Style/FrozenStringLiteralComment
cop的文件。