Sha256: 36c9ffc8e51f7e471294400f27cf8f901798c856ec46642f98e912fd57884a90

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

require 'json'
require 'rexml/document'

module OclintTranslateCheckstyleFormat
  module Translate
    def parse(str)
      JSON.load(str)
    end

    def trans(json)
      doc = REXML::Document.new
      doc << REXML::XMLDecl.new('1.0', 'UTF-8')

      checkstyle = doc.add_element('checkstyle')
      if json.empty?
        OclintTranslateCheckstyleFormat::Translate.add_dummy(checkstyle)
        return doc
      end

      json['violation'].each do |result|
        file = checkstyle.add_element('file',
                                      'name' => result['path']
                                     )
        file.add_element('error',
                         'line' => result['startLine'],
                         'severity' => 'error',
                         'message' => OclintTranslateCheckstyleFormat::Translate.create_message(result)
                        )
      end

      doc
    end

    def self.add_dummy(checkstyle)
      checkstyle.add_element('file',
                             'name' => ''
                            )

      checkstyle
    end

    def self.create_message(result)
      "[#{result['category']}] #{result['rule']}\n#{result['message']}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
oclint_translate_checkstyle_format-0.1.0 lib/oclint_translate_checkstyle_format/translate.rb