class RuboCop::Cop::Style::CommentedKeyword

end
y
class X # :nodoc:
# good
end
statement
if condition
# good
def x; end # comment
# bad
end
statement
class X # comment
# bad
end # end if
statement
if condition
# bad
@example
meaningful.
Autocorrection is unsafe because it may remove a comment that is
@safety
for ‘class`, `module`, `def` and `begin` above the keyword.
Autocorrection removes comments from `end` keyword and keeps comments
RBS::Inline annotation, and Steep annotation (`steep:ignore`) are allowed.
(`:nodoc:`, `:yields:`, `rubocop:disable` and `rubocop:todo`),
Note that some comments
These keywords are: `class`, `module`, `def`, `begin`, `end`.
Checks for comments put on the same line as some keywords.

def offensive?(comment)

def offensive?(comment)
  line = source_line(comment)
  return false if rbs_inline_annotation?(line, comment)
  return false if steep_annotation?(comment)
  KEYWORD_REGEXES.any? { |r| r.match?(line) } &&
    ALLOWED_COMMENT_REGEXES.none? { |r| r.match?(line) }
end

def on_new_investigation

def on_new_investigation
  processed_source.comments.each do |comment|
    next unless offensive?(comment) && (match = source_line(comment).match(REGEXP))
    register_offense(comment, match[:keyword])
  end
end

def rbs_inline_annotation?(line, comment)

def rbs_inline_annotation?(line, comment)
  case line
  when SUBCLASS_DEFINITION
    comment.text.start_with?(/#\[.+\]/)
  when METHOD_OR_END_DEFINITIONS
    comment.text.start_with?('#:')
  else
    false
  end
end

def register_offense(comment, matched_keyword)

def register_offense(comment, matched_keyword)
  add_offense(comment, message: format(MSG, keyword: matched_keyword)) do |corrector|
    range = range_with_surrounding_space(comment.source_range, newlines: false)
    corrector.remove(range)
    unless matched_keyword == 'end'
      corrector.insert_before(
        range.source_buffer.line_range(comment.loc.line), "#{comment.text}\n"
      )
    end
  end
end

def source_line(comment)

def source_line(comment)
  comment.source_range.source_line
end

def steep_annotation?(comment)

def steep_annotation?(comment)
  comment.text.match?(STEEP_REGEXP)
end