codeclimate 0.1.2 → 0.1.3

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
  SHA1:
3
- metadata.gz: 44be0fcd7a63732cee0dcaffeb53073518b2224b
4
- data.tar.gz: 7ba8ce2698db154603ceeec311d5683e2bac97df
3
+ metadata.gz: eade4e029db8e5fbeb3074af03ba35a571fa8b89
4
+ data.tar.gz: 9b10d656951c5f7411fe10fbf4e504d629810363
5
5
  SHA512:
6
- metadata.gz: eb5dc4a21dae91099c9895be07463d74156a43640aa451c3d886f1f43fb05fe4d7bad97fc0f7ce23cdad039ea10ee067c30350500ae47392a1129fd509dd1a3e
7
- data.tar.gz: e3cb97dce3b7fc85eda2afa2cb7462dc2785dbc5747dd155156c71e03b09af7da338960d07d405ccbeef5e5b7289004d334889dcc3848a3128f20e23cf6b4e9c
6
+ metadata.gz: 66b2b0e15c242af37fb41cd88c62db72bbb6f60b32d16edd061bae32ffe051a624395c94a098ce0a466e4a8596c7bd5414b1b723b0cd95a418cb061fd739895b
7
+ data.tar.gz: 02d48721c2276f455e3480c5cabf7736cd65d8132f5f35ac2ad876d50efd3208f3b4e8137af585435dd5c3e6a78a07d06774a55404abba7fd9de9b49ee6b7746
@@ -4,6 +4,7 @@ module CC
4
4
  autoload :Config, "cc/analyzer/config"
5
5
  autoload :Engine, "cc/analyzer/engine"
6
6
  autoload :EngineClient, "cc/analyzer/engine_client"
7
+ autoload :EngineOutputFilter, "cc/analyzer/engine_output_filter"
7
8
  autoload :EngineProcess, "cc/analyzer/engine_process"
8
9
  autoload :EngineRegistry, "cc/analyzer/engine_registry"
9
10
  autoload :Filesystem, "cc/analyzer/filesystem"
@@ -23,7 +23,11 @@ module CC
23
23
 
24
24
  t_out = Thread.new do
25
25
  out.each_line("\0") do |chunk|
26
- stdout_io.write(chunk.chomp("\0"))
26
+ output = chunk.chomp("\0")
27
+
28
+ unless output_filter.filter?(output)
29
+ stdout_io.write(output)
30
+ end
27
31
  end
28
32
  end
29
33
 
@@ -110,6 +114,16 @@ module CC
110
114
  end
111
115
  end
112
116
 
117
+ def output_filter
118
+ @output_filter ||= EngineOutputFilter.new(config)
119
+ end
120
+
121
+ def config
122
+ # N.B. there is no expected scenario where this would fail so a
123
+ # parser-error rescue has been omitted intentionally
124
+ JSON.parse(@config_json)
125
+ end
126
+
113
127
  CommandFailure = Class.new(StandardError)
114
128
  EngineFailure = Class.new(StandardError)
115
129
  EngineTimeout = Class.new(StandardError)
@@ -0,0 +1,40 @@
1
+ module CC
2
+ module Analyzer
3
+ class EngineOutputFilter
4
+ ISSUE_TYPE = "issue".freeze
5
+
6
+ def initialize(config = {})
7
+ @config = config
8
+ end
9
+
10
+ def filter?(output)
11
+ if (json = parse_as_json(output))
12
+ issue?(json) && ignore_issue?(json)
13
+ else
14
+ false
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def parse_as_json(output)
21
+ JSON.parse(output)
22
+ rescue JSON::ParserError
23
+ nil
24
+ end
25
+
26
+ def issue?(json)
27
+ json["type"] == ISSUE_TYPE
28
+ end
29
+
30
+ def ignore_issue?(json)
31
+ !check_config(json["check"]).fetch("enabled", true)
32
+ end
33
+
34
+ def check_config(check_name)
35
+ @checks ||= @config.fetch("checks", {})
36
+ @checks.fetch(check_name, {})
37
+ end
38
+ end
39
+ end
40
+ end
@@ -13,7 +13,10 @@ module CC
13
13
  end
14
14
 
15
15
  def engine_running(engine)
16
+ @current_engine = engine
16
17
  yield
18
+ ensure
19
+ @current_engine = nil
17
20
  end
18
21
 
19
22
  def finished
@@ -23,6 +26,10 @@ module CC
23
26
  end
24
27
 
25
28
  InvalidFormatterError = Class.new(StandardError)
29
+
30
+ private
31
+
32
+ attr_reader :current_engine
26
33
  end
27
34
  end
28
35
  end
@@ -7,25 +7,19 @@ module CC
7
7
  @has_begun = false
8
8
  end
9
9
 
10
- def engine_running(engine)
11
- @active_engine = engine
12
- yield
13
- @active_engine = nil
14
- end
15
-
16
10
  def started
17
- print "[ "
11
+ print "["
18
12
  end
19
13
 
20
14
  def finished
21
- print " ]\n"
15
+ print "]\n"
22
16
  end
23
17
 
24
18
  def write(data)
25
19
  return unless data.present?
26
20
 
27
21
  document = JSON.parse(data)
28
- document["engine_name"] = @active_engine.name
22
+ document["engine_name"] = current_engine.name
29
23
 
30
24
  if @has_begun
31
25
  print ",\n"
@@ -14,9 +14,7 @@ module CC
14
14
  def write(data)
15
15
  if data.present?
16
16
  json = JSON.parse(data)
17
- if @active_engine
18
- json["engine_name"] = @active_engine.name
19
- end
17
+ json["engine_name"] = current_engine.name
20
18
 
21
19
  case json["type"].downcase
22
20
  when "issue"
@@ -54,12 +52,10 @@ module CC
54
52
  puts(colorize(".", :green))
55
53
  end
56
54
 
57
- def engine_running(engine)
58
- @active_engine = engine
59
- with_spinner("Running #{engine.name}: ") do
60
- yield
55
+ def engine_running(engine, &block)
56
+ super(engine) do
57
+ with_spinner("Running #{current_engine.name}: ", &block)
61
58
  end
62
- @active_engine = nil
63
59
  end
64
60
 
65
61
  def failed(output)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codeclimate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code Climate
@@ -198,6 +198,7 @@ files:
198
198
  - lib/cc/analyzer.rb
199
199
  - lib/cc/analyzer/config.rb
200
200
  - lib/cc/analyzer/engine.rb
201
+ - lib/cc/analyzer/engine_output_filter.rb
201
202
  - lib/cc/analyzer/engine_registry.rb
202
203
  - lib/cc/analyzer/filesystem.rb
203
204
  - lib/cc/analyzer/formatters.rb