Sha256: f660215fd20acdcac24b1018f80abdd18a3a9a92e47b0fc813942ab729580cf9
Contents?: true
Size: 1.63 KB
Versions: 13
Compression:
Stored size: 1.63 KB
Contents
# frozen_string_literal: true # rubocop:disable Lint/RedundantCopDisableDirective # rubocop:disable Style/DoubleCopDisableDirective module RuboCop module Cop module Style # Detects double disable comments on one line. This is mostly to catch # automatically generated comments that need to be regenerated. # # @example # # bad # def f # rubocop:disable Style/For # rubocop:disable Metrics/AbcSize # end # # # good # # rubocop:disable Metrics/AbcSize # def f # rubocop:disable Style/For # end # # rubocop:enable Metrics/AbcSize # # # if both fit on one line # def f # rubocop:disable Style/For, Metrics/AbcSize # end # class DoubleCopDisableDirective < Cop # rubocop:enable Style/For, Style/DoubleCopDisableDirective # rubocop:enable Lint/RedundantCopDisableDirective, Metrics/AbcSize MSG = 'More than one disable comment on one line.' def investigate(processed_source) processed_source.comments.each do |comment| next unless comment.text.scan(/# rubocop:(?:disable|todo)/).size > 1 add_offense(comment) end end def autocorrect(comment) prefix = if comment.text.start_with?('# rubocop:disable') '# rubocop:disable' else '# rubocop:todo' end lambda do |corrector| corrector.replace(comment.loc.expression, comment.text[/#{prefix} \S+/]) end end end end end end
Version data entries
13 entries across 11 versions & 3 rubygems