class Repokeeper::Analyzers::SimilarCommits
Checks for similar commits messages in commit ant its parents commits level analyzer
Public Instance Methods
min_edit_distance()
click to toggle source
# File lib/repokeeper/analyzers/commits/similar_commits.rb, line 7 def min_edit_distance @config['min_edit_distance'] end
process_commit(commit)
click to toggle source
# File lib/repokeeper/analyzers/commits/similar_commits.rb, line 11 def process_commit(commit) commit.parents.map do |parent| compare_commits(commit, parent) end.compact end
Private Instance Methods
clean_commit_message(commit)
click to toggle source
# File lib/repokeeper/analyzers/commits/similar_commits.rb, line 40 def clean_commit_message(commit) commit.message.gsub(/[\t\n]/, ' ').strip end
compare_commits(newer, older)
click to toggle source
# File lib/repokeeper/analyzers/commits/similar_commits.rb, line 19 def compare_commits(newer, older) new_message = clean_commit_message(newer) old_message = clean_commit_message(older) distance = Repokeeper::Utils.edit_distance(new_message, old_message) error = error_message_by_distance(distance, new_message, old_message) create_offense_for_error(error, newer, older) end
create_offense_for_error(error, newer, older)
click to toggle source
# File lib/repokeeper/analyzers/commits/similar_commits.rb, line 36 def create_offense_for_error(error, newer, older) create_offense(newer, "#{error}. See #{older.oid}") if error end
error_message_by_distance(distance, new_message, old_message)
click to toggle source
# File lib/repokeeper/analyzers/commits/similar_commits.rb, line 28 def error_message_by_distance(distance, new_message, old_message) if distance == 0 "Same commit message: '#{new_message}'" elsif distance < min_edit_distance "Similar commit messages: '#{new_message}' and '#{old_message}'" end end