class Git::Cop::Styles::CommitBodyIssueTrackerLink

Public Class Methods

defaults() click to toggle source
# File lib/git/cop/styles/commit_body_issue_tracker_link.rb, line 7
def self.defaults
  {
    enabled: true,
    severity: :error,
    blacklist: [
      "(f|F)ix(es|ed)?\\s\\#\\d+",
      "(c|C)lose(s|d)?\\s\\#\\d+",
      "(r|R)esolve(s|d)?\\s\\#\\d+",
      "github\\.com\\/.+\\/issues\\/\\d+"
    ]
  }
end

Public Instance Methods

issue() click to toggle source
# File lib/git/cop/styles/commit_body_issue_tracker_link.rb, line 24
def issue
  return {} if valid?

  {
    hint: "Explain issue instead of using link. Avoid: #{graylist.to_hint}.",
    lines: affected_lines
  }
end
valid?() click to toggle source
# File lib/git/cop/styles/commit_body_issue_tracker_link.rb, line 20
def valid?
  commit.body_lines.none? { |line| invalid_line? line }
end

Protected Instance Methods

load_graylist() click to toggle source
# File lib/git/cop/styles/commit_body_issue_tracker_link.rb, line 35
def load_graylist
  Kit::Graylist.new settings.fetch :blacklist
end

Private Instance Methods

affected_lines() click to toggle source
# File lib/git/cop/styles/commit_body_issue_tracker_link.rb, line 45
def affected_lines
  commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
    lines << self.class.build_issue_line(index, line) if invalid_line?(line)
  end
end
invalid_line?(line) click to toggle source
# File lib/git/cop/styles/commit_body_issue_tracker_link.rb, line 41
def invalid_line? line
  line.match?(/.*#{Regexp.union graylist.to_regexp}.*/)
end