class Drunker::Aggregator::Phpmd
Constants
- VERSION
Public Instance Methods
exit_status(layers)
click to toggle source
# File lib/drunker/aggregator/phpmd.rb, line 39 def exit_status(layers) layers.map { |layer| layer.invalid? ? 1 : layer.exit_status }.max end
run(layers)
click to toggle source
# File lib/drunker/aggregator/phpmd.rb, line 4 def run(layers) pmd = REXML::Element.new("pmd") pmd.add_attribute("version", "@project.version@") pmd.add_attribute("timestamp", Time.now.iso8601) layers.each do |layer| if layer.invalid? STDERR.puts "ERROR: Invalid layer. build_id=#{layer.build_id}" else begin doc = REXML::Document.new(layer.stdout) doc.elements.each("pmd/file") do |file| pmd.add_element(file) end rescue REXML::ParseException => exn STDERR.puts "ERROR: XML parse error occurred. " + "build_id=#{layer.build_id}, " + "stdout=#{layer.stdout}, " + "stderr=#{layer.stderr}, " + "exit_status=#{layer.exit_status}, " + "exception=#{exn.inspect}" end end end doc = REXML::Document.new doc << REXML::XMLDecl.new("1.0", "UTF-8") doc.context[:attribute_quote] = :double_quote doc.add_element(pmd) result = StringIO.new REXML::Formatters::Pretty.new.write(doc, result) puts result.string end