class Git::Lint::Analyzers::CommitTrailerCollaboratorDuplication
Public Class Methods
defaults()
click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb, line 7 def self.defaults { enabled: true, severity: :error } end
new(commit:, settings: self.class.defaults, parser: Parsers::Trailers::Collaborator)
click to toggle source
Calls superclass method
Git::Lint::Analyzers::Abstract::new
# File lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb, line 14 def initialize commit:, settings: self.class.defaults, parser: Parsers::Trailers::Collaborator super commit: commit, settings: settings @parser = parser @tally = build_tally end
Public Instance Methods
build_tally()
click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb, line 44 def build_tally zeros = Hash.new { |new_hash, missing_key| new_hash[missing_key] = 0 } zeros.tap do |collection| commit.trailers.each { |line| collection[line] += 1 if parser.new(line).match? } end end
invalid_line?(line)
click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb, line 35 def invalid_line? line collaborator = parser.new line collaborator.match? && tally[line] != 1 end
issue()
click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb, line 24 def issue return {} if valid? { hint: "Avoid duplication.", lines: affected_commit_trailers } end
valid?(= affected_commit_trailers.empty?)
click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb, line 22 def valid? = affected_commit_trailers.empty? def issue return {} if valid? { hint: "Avoid duplication.", lines: affected_commit_trailers } end protected def invalid_line? line collaborator = parser.new line collaborator.match? && tally[line] != 1 end private attr_reader :parser, :tally def build_tally zeros = Hash.new { |new_hash, missing_key| new_hash[missing_key] = 0 } zeros.tap do |collection| commit.trailers.each { |line| collection[line] += 1 if parser.new(line).match? } end end end