Sha256: 006e2a4ab89ad0debbbc1edff8cc9b0f19f6728ebd72fa7cdfb81e241c3bdf6f
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
require 'nori' module PmdTranslateCheckstyleFormat module Translate def parse(xml) Nori .new(parser: :rexml) .parse(xml) end def trans(xml) require 'rexml/document' doc = REXML::Document.new doc << REXML::XMLDecl.new('1.0', 'UTF-8') checkstyle = doc.add_element("checkstyle") if xml['pmd'].blank? || xml['pmd']['file'].blank? # set_dummy(xml, checkstyle) return doc end files = xml['pmd']['file'] files = [files] if files.is_a?(Hash) files.each do |file| violations = file['violation'] violations = [violations] unless violations.is_a?(Array) violations.each do |violation| puts violation.attributes file_element = checkstyle.add_element("file", { 'name' => file['@name'] }) file_element.add_element("error", { 'line' => violation.attributes['beginline'], 'severity' => get_severity(violation.attributes['priority'].to_i), 'message' => "[#{violation.attributes['rule']}] #{violation.strip}\n#{violation.attributes['externalInfoUrl']}" }) end end doc end def get_severity(priority) case priority when 1, 2 'error' when 3, 4 'warning' when 5 'info' end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pmd_translate_checkstyle_format-0.1.1 | lib/pmd_translate_checkstyle_format/translate.rb |