4
5
6
7
8
9
10
11
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
|
# 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
|