Class: RuboCop::Formatter::JUnitFormatter
- Inherits:
-
BaseFormatter
- Object
- BaseFormatter
- RuboCop::Formatter::JUnitFormatter
- Defined in:
- lib/rubocop/formatter/junit_formatter.rb
Overview
This formatter formats the report data in JUnit format.
Instance Attribute Summary
Attributes inherited from BaseFormatter
Instance Method Summary collapse
- #classname_attribute_value(file) ⇒ Object
- #file_finished(file, offenses) ⇒ Object
- #finished(_inspected_files) ⇒ Object
-
#initialize(output, options = {}) ⇒ JUnitFormatter
constructor
A new instance of JUnitFormatter.
Methods inherited from BaseFormatter
Constructor Details
#initialize(output, options = {}) ⇒ JUnitFormatter
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 18 def initialize(output, = {}) super @document = REXML::Document.new.tap do |document| document << REXML::XMLDecl.new end testsuites = REXML::Element.new('testsuites', @document) testsuite = REXML::Element.new('testsuite', testsuites) @testsuite = testsuite.tap do |element| element.add_attributes('name' => 'rubocop') end end |
Instance Method Details
#classname_attribute_value(file) ⇒ Object
51 52 53 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 51 def classname_attribute_value(file) file.gsub(/\.rb\Z/, '').gsub("#{Dir.pwd}/", '').tr('/', '.') end |
#file_finished(file, offenses) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 31 def file_finished(file, offenses) # TODO: Returns all cops with the same behavior as # the original rubocop-junit-formatter. # https://github.com/mikian/rubocop-junit-formatter/blob/v0.1.4/lib/rubocop/formatter/junit_formatter.rb#L9 # # In the future, it would be preferable to return only enabled cops. Cop::Cop.all.each do |cop| REXML::Element.new('testcase', @testsuite).tap do |testcase| testcase.attributes['classname'] = classname_attribute_value(file) testcase.attributes['name'] = cop.cop_name target_offenses = offenses.select do |offense| offense.cop_name == cop.cop_name end add_failure_to(testcase, target_offenses, cop.cop_name) end end end |
#finished(_inspected_files) ⇒ Object
55 56 57 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 55 def finished(_inspected_files) @document.write(output, 2) end |