generate coverage report

This commit is contained in:
Miguel Savignano 2019-11-02 21:50:16 +01:00
parent 9247c263a3
commit e86bde2331
3 changed files with 34 additions and 41 deletions

27
lib/coverage_report.rb Normal file
View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
class CoverageReport
def self.generate(type, report_path, data)
if type == 'simplecov'
simplecov(report_path, data)
elsif type == 'jest'
jest(report_path, data)
else
raise 'InvalidCoverageReportType'
end
end
def self.simplecov(report_path, data)
report = JSON.parse(report_path)
minumum_percent = data[:min]
covered_percent = report.dig('result', 'covered_percent')
{ 'lines' => { 'covered_percent' => covered_percent, 'minumum_percent' => minumum_percent } }
end
def self.jest(report_path, data)
report = JSON.parse(report_path)
minumum_percent = data[:min]
covered_percent = report.dig('result', 'covered_percent')
{ 'lines' => { 'covered_percent' => covered_percent, 'minumum_percent' => minumum_percent } }
end
end

View File

@ -6,6 +6,7 @@ require 'time'
require_relative './report_adapter'
require_relative './github_check_run_service'
require_relative './github_client'
require_relative './coverage_report'
def read_json(path)
JSON.parse(File.read(path))
@ -14,16 +15,15 @@ end
@event_json = read_json(ENV['GITHUB_EVENT_PATH']) if ENV['GITHUB_EVENT_PATH']
@github_data = {
sha: ENV['GITHUB_SHA'],
token: ENV['GITHUB_TOKEN'],
token: ENV['INPUT_TOKEN'],
owner: ENV['GITHUB_REPOSITORY_OWNER'] || @event_json.dig('repository', 'owner', 'login'),
repo: ENV['GITHUB_REPOSITORY_NAME'] || @event_json.dig('repository', 'name')
}
@report =
if ENV['REPORT_PATH']
read_json(ENV['REPORT_PATH'])
else
Dir.chdir(ENV['GITHUB_WORKSPACE']) { JSON.parse(`brakeman -f json`) }
end
@coverage_type = ENV['INPUT_TYPE']
@report_path = ENV['INPUT_RESULT_PATH']
@data = { min: ENV['INPUT_MIN_COVERAGE'] }
@report = CoverageReport.generate(@coverage_type, @report_path, @data)
GithubCheckRunService.new(@report, @github_data, ReportAdapter).run

View File

@ -1,34 +0,0 @@
[
{
"path": "app/controllers/posts_controller.rb",
"start_line": 29,
"end_line": 29,
"annotation_level": "warning",
"title": "High - Evaluation",
"message": "User input in eval"
},
{
"path": "app/controllers/posts_controller.rb",
"start_line": 18,
"end_line": 18,
"annotation_level": "warning",
"title": "High - MassAssignment",
"message": "Parameters should be whitelisted for mass assignment"
},
{
"path": "app/controllers/posts_controller.rb",
"start_line": 19,
"end_line": 19,
"annotation_level": "warning",
"title": "High - MassAssignment",
"message": "Parameters should be whitelisted for mass assignment"
},
{
"path": "app/controllers/posts_controller.rb",
"start_line": 13,
"end_line": 13,
"annotation_level": "warning",
"title": "Medium - SQL",
"message": "Possible SQL injection"
}
]