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 する際には実行オプションとこれらの掛け合わせで判定される。