class Lintrunner::Parser::Rubocop

Public Instance Methods

parse(output, exit_code, options = {}) click to toggle source

Example output of rubocop (using the json formatter): {

"metadata": {
  "rubocop_version": "0.32.1",
  "ruby_engine": "ruby",
  "ruby_version": "2.1.1",
  "ruby_patchlevel": "76",
  "ruby_platform": "x86_64-darwin14.0"
},
"files": [
  {
    "path": "lib\/lintrunner\/options.rb",
    "offenses": [
      {
        "severity": "warning",
        "message": "Remove debugger entry point `binding.pry`.",
        "cop_name": "Lint\/Debugger",
        "corrected": null,
        "location": {
          "line": 73,
          "column": 22,
          "length": 11
        }
      }
    ]
  }
],
"summary": {
  "offense_count": 1,
  "target_file_count": 1,
  "inspected_file_count": 1
}

}

# File lib/lintrunner/parser/rubocop.rb, line 38
def parse(output, exit_code, options = {})
  return [] unless exit_code == 1

  messages = []
  JSON.parse(output)["files"].each do |file_results|
    filename = file_results["path"]
    file_results["offenses"].each do |lint|
      messages << Lintrunner::Message.new(
        filename: options[:filename] || filename,
        line: lint["location"]["line"],
        name: lint["cop_name"],
        description: lint["message"])
    end
  end
  messages
end