53 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'pmdtester'
 | |
| require 'time'
 | |
| require 'logger'
 | |
| 
 | |
| @logger = Logger.new(STDOUT)
 | |
| 
 | |
| def run_pmdtester
 | |
|   Dir.chdir('..') do
 | |
|     argv = ['-r', './pmd', '-b', "#{ENV['TRAVIS_BRANCH']}", '-p', 'FETCH_HEAD', '-m', 'online', '-a']
 | |
|     begin
 | |
|       runner = PmdTester::Runner.new(argv)
 | |
|       @new_errors, @removed_errors, @new_violations, @removed_violations = runner.run
 | |
|       upload_report
 | |
|     rescue StandardError => e
 | |
|       warn("Running pmdtester failed, this message is mainly used to remind the maintainers of PMD.")
 | |
|       @logger.error "Running pmdtester failed: #{e.inspect}"
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| def upload_report
 | |
|   Dir.chdir('target/reports') do
 | |
|     tar_filename = "pr-#{ENV['TRAVIS_PULL_REQUEST']}-diff-report-#{Time.now.strftime("%Y-%m-%dT%H-%M-%SZ")}.tar"
 | |
|     unless Dir.exist?('diff/')
 | |
|       message("No java rules are changed!", sticky: true)
 | |
|       return
 | |
|     end
 | |
| 
 | |
|     `tar -cf #{tar_filename} diff/`
 | |
| 	report_url = `curl -u #{ENV['CHUNK_TOKEN']} -T #{tar_filename} chunk.io`
 | |
| 	if $?.success?
 | |
| 	  @logger.info "Successfully uploaded #{tar_filename} to chunk.io"
 | |
| 
 | |
|       # set value of sticky to true and the message is kept after new commits are submited to the PR
 | |
| 	  message("This changeset introduces #{@new_violations} new violations and #{@new_errors} new errors,\n" +
 | |
| 	          "removes #{@removed_violations} violations and #{@removed_errors} errors. [Full report](#{report_url.chomp}/diff/index.html)", sticky: true)
 | |
| 	else
 | |
|       @logger.error "Error while uploading #{tar_filename} to chunk.io: #{report_url}"
 | |
|       warn("Uploading the diff report failed, this message is mainly used to remind the maintainers of PMD.")
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| # Perform regression testing
 | |
| can_merge = github.pr_json['mergeable']
 | |
| if can_merge
 | |
|   run_pmdtester
 | |
| else
 | |
|   warn("This PR cannot be merged yet.", sticky: false)
 | |
| end
 | |
| 
 | |
| # vim: syntax=ruby
 | 
