12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/ruby_ci/ruby_critic/cli/application.rb', line 12
def execute
events = []
events << ['ruby_critic_run'.upcase, {}]
status = super
content = File.read('tmp/rubycritic/report.json')
report = JSON.load(content)
modules = report['analysed_modules']
report['analysed_modules'] = {}
modules.each do |mod|
report['analysed_modules'][ mod['path'] ] = mod
mod['smells'].each do |smell|
location = smell['locations'].first
start_line = location['line'] - 1
end_line = start_line + 3
lines = File.readlines(location['path'])[start_line..end_line]
location['src'] = lines.join
smell['locations'][0] = location
end
end
compressed_data = ::Base64.strict_encode64(Zlib::Deflate.deflate(report.to_json, 9))
events << ['ruby_critic_exit_status'.upcase, ['0', { exitstatus: status, output: '', compressed_data: compressed_data }]]
if ENV['RBCI_REMOTE_TESTS'] == 'true'
json_events = {
build_id: RubyCI.configuration.orig_build_id,
compressed_data: Base64.strict_encode64(Zlib::Deflate.deflate(JSON.fast_generate(events), 9)),
}
RubyCI.send_events(json_events)
else
RubyCI.report_ruby_critic(compressed_data, 'passed')
end
return status
end
|