module Findbugs2Checkstyle::Convert

Public Instance Methods

fqcn_to_path(fqcn, xml) click to toggle source
# File lib/findbugs_2_checkstyle/convert.rb, line 45
def fqcn_to_path(fqcn, xml)
  path = fqcn.gsub('.', '/').split("$").first + '.java'
  src_dirs = xml['BugCollection']['Project']['SrcDir']
  unless src_dirs.is_a?(Array)
    src_dirs = [src_dirs]
  end
  src_dirs.find do |src|
    src.index(path) != nil
  end
end
parse(xml) click to toggle source
# File lib/findbugs_2_checkstyle/convert.rb, line 5
def parse(xml)
  Nori
    .new(parser: :rexml)
    .parse(xml)
end
trans(xml) click to toggle source
# File lib/findbugs_2_checkstyle/convert.rb, line 11
def trans(xml)
print "xxxxx"
  require 'rexml/document'
  doc = REXML::Document.new
  doc << REXML::XMLDecl.new('1.0', 'UTF-8')

  checkstyle = doc.add_element("checkstyle")
  if xml['BugCollection']['BugInstance']
    bugInstances = xml['BugCollection']['BugInstance'].is_a?(Array) ? xml['BugCollection']['BugInstance'] : [xml['BugCollection']['BugInstance']]
    bugInstances.each do |bugInstance|
      sourceLines = bugInstance['SourceLine'].is_a?(Array) ? bugInstance['SourceLine'] : [bugInstance['SourceLine']]
              file = checkstyle.add_element("file", {
        'name' => fqcn_to_path(sourceLines[sourceLines.length - 1]['@classname'], xml)
        })
      file.add_element("error", {
        'line' => sourceLines[sourceLines.length - 1]['@start'],
        'severity' => '',
        'message' => "[#{bugInstance['@category']}] #{bugInstance['LongMessage']}"
        })
    end
  else
    # create dummy
    dummy_src_dir = xml['BugCollection']['Project']['SrcDir']
    if dummy_src_dir.is_a?(Array)
      dummy_src_dir = dummy_src_dir.first
    end
    file = checkstyle.add_element("file", {
      'name' => dummy_src_dir
      })
  end

  doc
end