codeclimate 0.85.27 → 0.86.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e09ed17ce9ec4365cae365db7bba58fe24249134eb4ceeb27c06f303a5bf9f5
4
- data.tar.gz: b263fb932ae6baca90405bc6b3b073c925571816a9803fe024858389397e9fb9
3
+ metadata.gz: ff82fca07cdf87fc66cd1f5999de48ca7361160a82de553ba9d08c4b50cf84d9
4
+ data.tar.gz: 2232adc3deb9897164a58e91e1228ec8d39c29a36eb66e393ec03d783ffe28a6
5
5
  SHA512:
6
- metadata.gz: e62725c2f9b8733053d406db3f8abfd77217b5bf800a78bb3e09966f18e05435a931a17d73ca4f10d79fd10da02477dbf0a7b5993af4d9c393fdc02c6d8249e4
7
- data.tar.gz: 2e1903aeabc18f07f11c461f0d35c0857eaad4909bdd77d5c794e2e9e29415417069a247d9692619a47381ef7ffff7f3d4bd7fb5bac4f3c11e62c63983112101
6
+ metadata.gz: 2095d9f29f26838ac72b91c433b306e93bef66185427eacf100c995619941c012c77d5623f136f651705c3e25ddf0a420a729bacd36d2b7423fce2d5588dd058
7
+ data.tar.gz: e80478964ff1133009fa0cecb81c127cb2c430381b5c77442acfeb33b87f445592d024143a4895932e745a33a23e62f55db8042110519ee5539a814c7725c104
data/config/engines.yml CHANGED
@@ -81,6 +81,7 @@ eslint:
81
81
  eslint-5: codeclimate/codeclimate-eslint:eslint-5
82
82
  eslint-6: codeclimate/codeclimate-eslint:eslint-6
83
83
  eslint-7: codeclimate/codeclimate-eslint:eslint-7
84
+ eslint-8: codeclimate/codeclimate-eslint:eslint-8
84
85
  description: A JavaScript/JSX linting utility.
85
86
  flog:
86
87
  channels:
@@ -1,5 +1,5 @@
1
- require "posix/spawn"
2
1
  require "cc/analyzer/container/result"
2
+ require "open3"
3
3
 
4
4
  module CC
5
5
  module Analyzer
@@ -52,19 +52,14 @@ module CC
52
52
 
53
53
  command = docker_run_command(options)
54
54
  Analyzer.logger.debug("docker run: #{command.inspect}")
55
- pid, _, out, err = POSIX::Spawn.popen4(*command)
55
+ _, out, err, @t_wait = Open3.popen3(*command)
56
56
 
57
57
  @t_out = read_stdout(out)
58
58
  @t_err = read_stderr(err)
59
59
  t_timeout = timeout_thread
60
60
 
61
- # blocks until the engine stops. this is put in a thread so that we can
62
- # explicitly abort it as part of #stop. otherwise a run-away container
63
- # could still block here forever if the docker-kill/wait is not
64
- # successful. there may still be stdout in flight if it was being
65
- # produced more quickly than consumed.
66
- @t_wait = Thread.new { _, @status = Process.waitpid2(pid) }
67
- @t_wait.join
61
+ # Calling @t_wait.value waits the termination of the process / engine
62
+ @status = @t_wait.value
68
63
 
69
64
  # blocks until all readers are done. they're still governed by the
70
65
  # timeout thread at this point. if we hit the timeout while processing
@@ -97,6 +92,9 @@ module CC
97
92
  def stop(message = nil)
98
93
  reap_running_container(message)
99
94
  kill_reader_threads
95
+ # Manually killing the process otherwise a run-away container
96
+ # could still block here forever if the docker-kill/wait is not
97
+ # successful
100
98
  kill_wait_thread
101
99
  end
102
100
 
@@ -178,9 +176,11 @@ module CC
178
176
 
179
177
  def reap_running_container(message)
180
178
  Analyzer.logger.warn("killing container name=#{@name} message=#{message.inspect}")
181
- POSIX::Spawn::Child.new("docker", "kill", @name, timeout: 2.minutes)
182
- POSIX::Spawn::Child.new("docker", "wait", @name, timeout: 2.minutes)
183
- rescue POSIX::Spawn::TimeoutExceeded
179
+ Timeout.timeout(2.minutes.to_i) do
180
+ Kernel.system("docker", "kill", @name, [:out, :err] => File::NULL)
181
+ Kernel.system("docker", "wait", @name, [:out, :err] => File::NULL)
182
+ end
183
+ rescue Timeout::Error
184
184
  Analyzer.logger.error("unable to kill container name=#{@name} message=#{message.inspect}")
185
185
  Analyzer.statsd.increment("container.zombie")
186
186
  Analyzer.statsd.increment("container.zombie.#{metric_name}") if metric_name
@@ -31,7 +31,7 @@ module CC
31
31
  @data =
32
32
  if File.exist? self.class::FILE_NAME
33
33
  File.open(self.class::FILE_NAME, "r:bom|utf-8") do |f|
34
- YAML.safe_load(f, [Time], [], false, self.class::FILE_NAME) || {}
34
+ YAML.safe_load(f, permitted_classes: [Time], permitted_symbols: [], aliases: false, filename: self.class::FILE_NAME) || {}
35
35
  end
36
36
  else
37
37
  {}
@@ -26,6 +26,7 @@ module CC
26
26
  IPAddr.new("fd00::/8"),
27
27
  IPAddr.new("127.0.0.1"),
28
28
  IPAddr.new("0:0:0:0:0:0:0:1"),
29
+ IPAddr.new("169.254.0.0/16"),
29
30
  ].freeze
30
31
 
31
32
  def run
@@ -34,6 +34,10 @@ module CC
34
34
  entries.each(&block)
35
35
  end
36
36
 
37
+ def paths
38
+ entries.map(&:path)
39
+ end
40
+
37
41
  def merge(other)
38
42
  Fetch.new(each.to_a | other.each.to_a)
39
43
  end
data/lib/cc/config.rb CHANGED
@@ -40,10 +40,12 @@ module CC
40
40
  end
41
41
 
42
42
  def self.build(data)
43
+ prepare = Prepare.from_data(data["prepare"])
44
+ base_excluded_patterns = data.fetch("exclude_patterns", DefaultAdapter::EXCLUDE_PATTERNS)
43
45
  new(
44
46
  engines: EngineSet.new(data.fetch("plugins", {})).engines,
45
- exclude_patterns: data.fetch("exclude_patterns", DefaultAdapter::EXCLUDE_PATTERNS),
46
- prepare: Prepare.from_data(data["prepare"]),
47
+ exclude_patterns: base_excluded_patterns + prepare.fetch.paths,
48
+ prepare: prepare,
47
49
  )
48
50
  end
49
51
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codeclimate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.85.27
4
+ version: 0.86.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code Climate
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-11 00:00:00.000000000 Z
11
+ date: 2022-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -44,40 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.7'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 1.7.2
47
+ version: 2.0.3
51
48
  type: :runtime
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
52
  - - "~>"
56
53
  - !ruby/object:Gem::Version
57
- version: '1.7'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 1.7.2
61
- - !ruby/object:Gem::Dependency
62
- name: posix-spawn
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '0.3'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.3.11
71
- type: :runtime
72
- prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - "~>"
76
- - !ruby/object:Gem::Version
77
- version: '0.3'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.3.11
54
+ version: 2.0.3
81
55
  - !ruby/object:Gem::Dependency
82
56
  name: pry
83
57
  requirement: !ruby/object:Gem::Requirement
@@ -96,22 +70,22 @@ dependencies:
96
70
  name: rainbow
97
71
  requirement: !ruby/object:Gem::Requirement
98
72
  requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: 2.0.0
102
73
  - - "~>"
103
74
  - !ruby/object:Gem::Version
104
75
  version: '2.0'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 2.0.0
105
79
  type: :runtime
106
80
  prerelease: false
107
81
  version_requirements: !ruby/object:Gem::Requirement
108
82
  requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: 2.0.0
112
83
  - - "~>"
113
84
  - !ruby/object:Gem::Version
114
85
  version: '2.0'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 2.0.0
115
89
  - !ruby/object:Gem::Dependency
116
90
  name: redcarpet
117
91
  requirement: !ruby/object:Gem::Requirement
@@ -256,16 +230,19 @@ require_paths:
256
230
  - lib
257
231
  required_ruby_version: !ruby/object:Gem::Requirement
258
232
  requirements:
259
- - - "~>"
233
+ - - ">="
260
234
  - !ruby/object:Gem::Version
261
235
  version: '2.6'
236
+ - - "<="
237
+ - !ruby/object:Gem::Version
238
+ version: 3.1.2
262
239
  required_rubygems_version: !ruby/object:Gem::Requirement
263
240
  requirements:
264
241
  - - ">="
265
242
  - !ruby/object:Gem::Version
266
243
  version: '0'
267
244
  requirements: []
268
- rubygems_version: 3.0.8
245
+ rubygems_version: 3.3.7
269
246
  signing_key:
270
247
  specification_version: 4
271
248
  summary: Code Climate CLI