class RuboCop::Cop::Style::CommentAnnotation
This cop checks that comment annotation keywords are written according to guidelines.
Constants
- MISSING_NOTE
- MSG
Public Instance Methods
investigate(processed_source)
click to toggle source
# File lib/rubocop/cop/style/comment_annotation.rb, line 17 def investigate(processed_source) processed_source.comments.each_with_index do |comment, ix| next unless first_comment_line?(processed_source.comments, ix) margin, first_word, colon, space, note = split_comment(comment) next unless annotation?(comment) && !correct_annotation?(first_word, colon, space, note) length = concat_length(first_word, colon, space) add_offense( comment, location: annotation_range(comment, margin, length), message: format(note ? MSG : MISSING_NOTE, first_word) ) end end
Private Instance Methods
annotation_range(comment, margin, length)
click to toggle source
# File lib/rubocop/cop/style/comment_annotation.rb, line 50 def annotation_range(comment, margin, length) start = comment.loc.expression.begin_pos + margin.length range_between(start, start + length) end
autocorrect(comment)
click to toggle source
# File lib/rubocop/cop/style/comment_annotation.rb, line 40 def autocorrect(comment) margin, first_word, colon, space, note = split_comment(comment) return if note.nil? length = concat_length(first_word, colon, space) range = annotation_range(comment, margin, length) ->(corrector) { corrector.replace(range, "#{first_word.upcase}: ") } end
concat_length(*args)
click to toggle source
# File lib/rubocop/cop/style/comment_annotation.rb, line 55 def concat_length(*args) args.reduce(0) { |acc, elem| acc + elem.to_s.length } end
correct_annotation?(first_word, colon, space, note)
click to toggle source
# File lib/rubocop/cop/style/comment_annotation.rb, line 59 def correct_annotation?(first_word, colon, space, note) keyword?(first_word) && (colon && space && note || !colon && !note) end
first_comment_line?(comments, ix)
click to toggle source
# File lib/rubocop/cop/style/comment_annotation.rb, line 36 def first_comment_line?(comments, ix) ix.zero? || comments[ix - 1].loc.line < comments[ix].loc.line - 1 end