def run(max_reviewers = 3, file_blacklist = [], user_blacklist = [])
      files = select_files(file_blacklist)
      return if files.empty?

      authors = {}
      compose_urls(files).each do |url|
        result = parse_blame(url)
        authors.merge!(result) { |_, m, n| m + n }
      end

      reviewers = find_reviewers(authors, user_blacklist, max_reviewers)

      if reviewers.count > 0
        reviewers = reviewers.map { |r| '@' + r }

        result = format('By analyzing the blame information on this pull '\
        'request, we identified %s to be potential reviewer%s.',
                        reviewers.join(', '), reviewers.count > 1 ? 's' : '')

        markdown result
      end
    end
def run(max_reviewers = 3, file_blacklist = [], user_blacklist = [])
      files = select_files(file_blacklist)
      return if files.empty?

      authors = {}
      compose_urls(files).each do |url|
        result = parse_blame(url)
        authors.merge!(result) { |_, m, n| m + n }
      end

      reviewers = find_reviewers(authors, user_blacklist, max_reviewers)

      if reviewers.count > 0
        reviewers = reviewers.map { |r| '@' + r }

        result = format('By analyzing the blame information on this pull '\
        'request, we identified %s to be potential reviewer%s.',
                        reviewers.join(', '), reviewers.count > 1 ? 's' : '')

        markdown result
      end
    end
Mention potential reviewers.

 @param   [Integer] max_reviewers
          Maximum number of people to ping in the PR message, default is 3.
 @param   [Array<String>] file_blacklist
          Regexes of ignored files.
 @param   [Array<String>] user_blacklist
          List of users that will never be mentioned.
 @return  [void]