RuboCopのあるCopがautocorrectをサポートしているかRuboCopモジュールで確認する

RuboCop 内部の小ネタ。 ある RuboCop が autocorrect をサポートしているか、RuboCop モジュールで確認するには RuboCop::Cop::Cop#support_autocorrect? で参照できる。

% cd path/to/rubocop/repo
% bin/console
> registry = RuboCop::Cop::Cop.registry
> cop = registry.find_by_cop_name('Bundler/DuplicatedGem')
> cop.new.support_autocorrect?
=> false
> cop = registry.find_by_cop_name('Lint/UnneededRequireStatement')
> cop.new.support_autocorrect?
=> true

この手のモジュール APIドキュメントでの以下の文言で grep するなど手がかりにしたりしている。

% ag 'Supports autocorrection'

https://github.com/rubocop-hq/rubocop/blob/v0.58.2/tasks/cops_documentation.rake#L35

なお、サポートとは別に有効かどうか知るには RuboCop::Cop::Cop#autocorrect_enabled? を使うことになる。

https://github.com/rubocop-hq/rubocop/blob/v0.58.2/lib/rubocop/cop/autocorrect_logic.rb#L19-L23

実際に autocorrect する際には実行オプションとこれらの掛け合わせで判定される。