diff --git a/Dockerfile b/Dockerfile index 25265bc8..3677880d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM codeclimate/codeclimate-parser:b962 +FROM codeclimate/codeclimate-parser:b946 LABEL maintainer="Code Climate " # Reset from base image diff --git a/Gemfile b/Gemfile index cb12421b..efbc0b0d 100644 --- a/Gemfile +++ b/Gemfile @@ -2,8 +2,8 @@ source "https://rubygems.org" gem "concurrent-ruby", "~> 1.0.0" -gem "flay", "~> 2.13.1" -gem "sexp_processor", "~> 4.17" +gem "flay", "~> 2.12" +gem "sexp_processor", "~> 4.11" gem "codeclimate-parser-client", path: "/home/app/codeclimate-parser-client" diff --git a/Gemfile.lock b/Gemfile.lock index a47d6b75..f7f6fd51 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,44 +3,46 @@ PATH specs: codeclimate-parser-client (0.0.0) ast (~> 2.3) - excon (~> 0.99.0) + excon (~> 0.57.0) GEM remote: https://rubygems.org/ specs: - ast (2.4.2) - coderay (1.1.3) - concurrent-ruby (1.0.5) - diff-lcs (1.5.0) - erubi (1.12.0) - excon (0.99.0) - flay (2.13.1) - erubi (~> 1.10) + ast (2.3.0) + coderay (1.1.0) + concurrent-ruby (1.0.0) + diff-lcs (1.2.5) + erubis (2.7.0) + excon (0.57.1) + flay (2.12.0) + erubis (~> 2.7.0) path_expander (~> 1.0) ruby_parser (~> 3.0) sexp_processor (~> 4.0) - method_source (1.0.0) - path_expander (1.1.1) - pry (0.14.2) - coderay (~> 1.1) - method_source (~> 1.0) - rake (13.1.0) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) - rspec-core (3.12.2) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) + method_source (0.8.2) + path_expander (1.0.3) + pry (0.10.3) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + rake (10.4.2) + rspec (3.3.0) + rspec-core (~> 3.3.0) + rspec-expectations (~> 3.3.0) + rspec-mocks (~> 3.3.0) + rspec-core (3.3.2) + rspec-support (~> 3.3.0) + rspec-expectations (3.3.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-mocks (3.12.6) + rspec-support (~> 3.3.0) + rspec-mocks (3.3.2) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-support (3.12.1) - ruby_parser (3.20.3) - sexp_processor (~> 4.16) - sexp_processor (4.17.0) + rspec-support (~> 3.3.0) + rspec-support (3.3.0) + ruby_parser (3.11.0) + sexp_processor (~> 4.9) + sexp_processor (4.11.0) + slop (3.6.0) PLATFORMS ruby @@ -48,11 +50,11 @@ PLATFORMS DEPENDENCIES codeclimate-parser-client! concurrent-ruby (~> 1.0.0) - flay (~> 2.13.1) + flay (~> 2.12) pry rake rspec - sexp_processor (~> 4.17) + sexp_processor (~> 4.11) BUNDLED WITH - 2.4.22 + 2.3.12 diff --git a/lib/cc/engine/analyzers/analyzer_base.rb b/lib/cc/engine/analyzers/analyzer_base.rb index cb7c2bba..aa144ceb 100644 --- a/lib/cc/engine/analyzers/analyzer_base.rb +++ b/lib/cc/engine/analyzers/analyzer_base.rb @@ -1,51 +1,5 @@ # frozen_string_literal: true -# Monkey patch for Parser class -# used in language analyzers via Sexp::Matcher.parse -# https://github.com/seattlerb/sexp_processor/blob/master/lib/sexp_matcher.rb -class Sexp - class Matcher < Sexp - class Parser - def parse_sexp - token = next_token - - case token - when "(" then - parse_list - when "[" then - parse_cmd - when "nil" then - nil - when /^\d+$/ then - token.to_i - when "___" then - Sexp.___ - when "_" then - Sexp._ - when %r%^/(.*)/$% then - re = $1 - raise SyntaxError, "Not allowed: /%p/" % [re] unless - re =~ /\A([\w()|.*+^$]+)\z/ - Regexp.new re - when /^"(.*)"$/ then - $1 - when /^([A-Z]\w*)$/ then - if Object.const_defined?($1) - Object.const_get $1 - else - # Handle as a symbol or string - $1.to_sym # or return $1 as a string - end - when /^:?([\w?!=~-]+)$/ then - $1.to_sym - else - raise SyntaxError, "unhandled token: %p" % [token] - end - end - end - end -end - require "cc/engine/analyzers/parser_error" require "cc/engine/analyzers/parser_base" require "cc/engine/analyzers/file_list" diff --git a/spec/cc/engine/analyzers/ruby/main_spec.rb b/spec/cc/engine/analyzers/ruby/main_spec.rb index f9743816..1b892275 100644 --- a/spec/cc/engine/analyzers/ruby/main_spec.rb +++ b/spec/cc/engine/analyzers/ruby/main_spec.rb @@ -61,10 +61,10 @@ def self.from_remediation_amount(amount) expect(json["location"]).to eq({ "path" => "foo.rb", - "lines" => { "begin" => 2, "end" => 11 }, + "lines" => { "begin" => 2, "end" => 12 }, }) expect(json["other_locations"]).to eq([ - {"path" => "foo.rb", "lines" => { "begin" => 18, "end" => 27} }, + {"path" => "foo.rb", "lines" => { "begin" => 18, "end" => 28} }, ]) end diff --git a/spec/cc/engine/analyzers/sexp_lines_spec.rb b/spec/cc/engine/analyzers/sexp_lines_spec.rb index 2dc04938..77ab6c02 100644 --- a/spec/cc/engine/analyzers/sexp_lines_spec.rb +++ b/spec/cc/engine/analyzers/sexp_lines_spec.rb @@ -18,9 +18,9 @@ module CC::Engine::Analyzers expect(locations.count).to eq 2 expect(locations[0].begin_line).to eq(3) - expect(locations[0].end_line).to eq(4) + expect(locations[0].end_line).to eq(7) expect(locations[1].begin_line).to eq(5) - expect(locations[1].end_line).to eq(6) + expect(locations[1].end_line).to eq(7) end it "gets appropriate locations for hashes" do