codeclimate 0.29.0 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/config/engines.yml +67 -35
- data/lib/cc/analyzer/engine.rb +5 -0
- data/lib/cc/analyzer/engines_config_builder.rb +16 -2
- data/lib/cc/analyzer/formatters.rb +2 -0
- data/lib/cc/analyzer/formatters/html_formatter.rb +82 -0
- data/lib/cc/cli/analyze.rb +7 -2
- data/lib/cc/cli/engines/install.rb +2 -6
- data/lib/cc/cli/help.rb +1 -1
- data/lib/cc/cli/test.rb +1 -1
- metadata +19 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a3f32cefb371cbbde1e958f6e6249101cd6aaba0
|
|
4
|
+
data.tar.gz: 63bf94a4ec496821d32a185247ab24a5b52502ba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b847ba8b39c19a3e5f17254271aeee4641cbc0bf95ff8c383a10ff24f354c40ad21e57de65093953cb8d334c528214c2840744d6a66018a62b1ffa8ed80c6754
|
|
7
|
+
data.tar.gz: d912d8ead585a16848ea2f06b35cc5dafdf3853fdcad8ab45aacb8db7de9446ec9e86e5de7b806d10c9bf2bafc008de8655965b01a5da8c7199d9a516fbc6825
|
data/config/engines.yml
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# This file lists all the engines available to be run for analysis.
|
|
2
2
|
#
|
|
3
|
-
# Each engine must have
|
|
4
|
-
# be passed to `docker run` and so may be any value
|
|
5
|
-
# (repo/name:tag, image id, etc).
|
|
3
|
+
# Each engine must have `channels` (with a `stable` key) and `description`. The
|
|
4
|
+
# values in `channels` will be passed to `docker run` and so may be any value
|
|
5
|
+
# appropriate for that (repo/name:tag, image id, etc).
|
|
6
6
|
#
|
|
7
7
|
# When a repo has files that match the `enable_regexps`, that engine will be
|
|
8
8
|
# enabled by default in the codeclimate.yml file. That file will also have in it
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
# which files should be rated.
|
|
11
11
|
#
|
|
12
12
|
brakeman:
|
|
13
|
-
|
|
13
|
+
channels:
|
|
14
|
+
stable: codeclimate/codeclimate-brakeman
|
|
14
15
|
description: Static analysis tool which checks Ruby on Rails applications for security vulnerabilities.
|
|
15
16
|
community: false
|
|
16
17
|
upgrade_languages:
|
|
@@ -25,7 +26,8 @@ brakeman:
|
|
|
25
26
|
- "**.rhtml"
|
|
26
27
|
- "**.slim"
|
|
27
28
|
bundler-audit:
|
|
28
|
-
|
|
29
|
+
channels:
|
|
30
|
+
stable: codeclimate/codeclimate-bundler-audit
|
|
29
31
|
description: Patch-level verification for Bundler.
|
|
30
32
|
community: false
|
|
31
33
|
upgrade_languages:
|
|
@@ -35,7 +37,8 @@ bundler-audit:
|
|
|
35
37
|
default_ratings_paths:
|
|
36
38
|
- Gemfile.lock
|
|
37
39
|
csslint:
|
|
38
|
-
|
|
40
|
+
channels:
|
|
41
|
+
stable: codeclimate/codeclimate-csslint
|
|
39
42
|
description: Automated linting of Cascading Stylesheets.
|
|
40
43
|
community: false
|
|
41
44
|
enable_regexps:
|
|
@@ -43,7 +46,8 @@ csslint:
|
|
|
43
46
|
default_ratings_paths:
|
|
44
47
|
- "**.css"
|
|
45
48
|
coffeelint:
|
|
46
|
-
|
|
49
|
+
channels:
|
|
50
|
+
stable: codeclimate/codeclimate-coffeelint
|
|
47
51
|
description: A style checker for CoffeeScript.
|
|
48
52
|
community: false
|
|
49
53
|
enable_regexps:
|
|
@@ -51,7 +55,8 @@ coffeelint:
|
|
|
51
55
|
default_ratings_paths:
|
|
52
56
|
- "**.coffee"
|
|
53
57
|
duplication:
|
|
54
|
-
|
|
58
|
+
channels:
|
|
59
|
+
stable: codeclimate/codeclimate-duplication
|
|
55
60
|
description: Structural duplication detection for Ruby, Python, JavaScript, and PHP.
|
|
56
61
|
community: false
|
|
57
62
|
enable_regexps:
|
|
@@ -77,7 +82,8 @@ duplication:
|
|
|
77
82
|
- python
|
|
78
83
|
- php
|
|
79
84
|
eslint:
|
|
80
|
-
|
|
85
|
+
channels:
|
|
86
|
+
stable: codeclimate/codeclimate-eslint
|
|
81
87
|
description: A JavaScript/JSX linting utility.
|
|
82
88
|
community: false
|
|
83
89
|
upgrade_languages:
|
|
@@ -89,7 +95,8 @@ eslint:
|
|
|
89
95
|
- "**.js"
|
|
90
96
|
- "**.jsx"
|
|
91
97
|
gofmt:
|
|
92
|
-
|
|
98
|
+
channels:
|
|
99
|
+
stable: codeclimate/codeclimate-gofmt
|
|
93
100
|
description: Checks the formatting of Go programs.
|
|
94
101
|
community: true
|
|
95
102
|
enable_regexps:
|
|
@@ -97,7 +104,8 @@ gofmt:
|
|
|
97
104
|
default_ratings_paths:
|
|
98
105
|
- "**.go"
|
|
99
106
|
golint:
|
|
100
|
-
|
|
107
|
+
channels:
|
|
108
|
+
stable: codeclimate/codeclimate-golint
|
|
101
109
|
description: A linter for Go.
|
|
102
110
|
community: true
|
|
103
111
|
enable_regexps:
|
|
@@ -105,7 +113,8 @@ golint:
|
|
|
105
113
|
default_ratings_paths:
|
|
106
114
|
- "**.go"
|
|
107
115
|
govet:
|
|
108
|
-
|
|
116
|
+
channels:
|
|
117
|
+
stable: codeclimate/codeclimate-govet
|
|
109
118
|
description: Reports suspicious constructs in Go programs.
|
|
110
119
|
community: true
|
|
111
120
|
enable_regexps:
|
|
@@ -113,20 +122,23 @@ govet:
|
|
|
113
122
|
default_ratings_paths:
|
|
114
123
|
- "**.go"
|
|
115
124
|
fixme:
|
|
116
|
-
|
|
125
|
+
channels:
|
|
126
|
+
stable: codeclimate/codeclimate-fixme
|
|
117
127
|
description: Finds FIXME, TODO, HACK, etc. comments.
|
|
118
128
|
community: false
|
|
119
129
|
enable_regexps:
|
|
120
130
|
- .+
|
|
121
131
|
default_ratings_paths: []
|
|
122
132
|
foodcritic:
|
|
123
|
-
|
|
133
|
+
channels:
|
|
134
|
+
stable: codeclimate/codeclimate-foodcritic
|
|
124
135
|
description: Lint tool for Chef cookbooks.
|
|
125
136
|
community: true
|
|
126
137
|
enable_regexps:
|
|
127
138
|
default_ratings_paths:
|
|
128
139
|
gnu-complexity:
|
|
129
|
-
|
|
140
|
+
channels:
|
|
141
|
+
stable: codeclimate/codeclimate-gnu-complexity
|
|
130
142
|
description: Checks complexity of C code
|
|
131
143
|
community: true
|
|
132
144
|
enable_regexps:
|
|
@@ -134,7 +146,8 @@ gnu-complexity:
|
|
|
134
146
|
default_ratings_paths:
|
|
135
147
|
- "**.c"
|
|
136
148
|
haxe-checkstyle:
|
|
137
|
-
|
|
149
|
+
channels:
|
|
150
|
+
stable: codeclimate/codeclimate-haxe-checkstyle
|
|
138
151
|
description: Checkstyle is a development library to help developers write Haxe code that adheres to a coding standard.
|
|
139
152
|
community: true
|
|
140
153
|
enable_regexps:
|
|
@@ -142,7 +155,8 @@ haxe-checkstyle:
|
|
|
142
155
|
default_ratings_paths:
|
|
143
156
|
- "**.hx"
|
|
144
157
|
hlint:
|
|
145
|
-
|
|
158
|
+
channels:
|
|
159
|
+
stable: codeclimate/codeclimate-hlint
|
|
146
160
|
description: Linter for Haskell programs.
|
|
147
161
|
community: true
|
|
148
162
|
enable_regexps:
|
|
@@ -150,7 +164,8 @@ hlint:
|
|
|
150
164
|
default_ratings_paths:
|
|
151
165
|
- "**.hs"
|
|
152
166
|
kibit:
|
|
153
|
-
|
|
167
|
+
channels:
|
|
168
|
+
stable: codeclimate/codeclimate-kibit
|
|
154
169
|
description: Static code analyzer for Clojure, ClojureScript, cljx and other Clojure variants.
|
|
155
170
|
community: true
|
|
156
171
|
enable_regexps:
|
|
@@ -162,7 +177,8 @@ kibit:
|
|
|
162
177
|
- "**.cljc"
|
|
163
178
|
- "**.cljs"
|
|
164
179
|
markdownlint:
|
|
165
|
-
|
|
180
|
+
channels:
|
|
181
|
+
stable: codeclimate/codeclimate-markdownlint
|
|
166
182
|
description: Flags style issues within Markdown files.
|
|
167
183
|
community: true
|
|
168
184
|
enable_regexps:
|
|
@@ -172,20 +188,23 @@ markdownlint:
|
|
|
172
188
|
- "**.markdown"
|
|
173
189
|
- "**.md"
|
|
174
190
|
nodesecurity:
|
|
175
|
-
|
|
191
|
+
channels:
|
|
192
|
+
stable: codeclimate/codeclimate-nodesecurity
|
|
176
193
|
description: Security tool for Node.js dependencies.
|
|
177
194
|
community: true
|
|
178
195
|
enable_regexps:
|
|
179
196
|
default_ratings_paths:
|
|
180
197
|
pep8:
|
|
181
|
-
|
|
198
|
+
channels:
|
|
199
|
+
stable: codeclimate/codeclimate-pep8
|
|
182
200
|
description: Static analysis tool to check Python code against the style conventions outlined in PEP-8.
|
|
183
201
|
community: false
|
|
184
202
|
enable_regexps:
|
|
185
203
|
default_ratings_paths:
|
|
186
204
|
- "**.py"
|
|
187
205
|
phan:
|
|
188
|
-
|
|
206
|
+
channels:
|
|
207
|
+
stable: codeclimate/codeclimate-phan
|
|
189
208
|
description: Phan is a static analyzer for PHP.
|
|
190
209
|
community: true
|
|
191
210
|
enable_regexps:
|
|
@@ -197,7 +216,8 @@ phan:
|
|
|
197
216
|
- "**.module"
|
|
198
217
|
- "**.inc"
|
|
199
218
|
phpcodesniffer:
|
|
200
|
-
|
|
219
|
+
channels:
|
|
220
|
+
stable: codeclimate/codeclimate-phpcodesniffer
|
|
201
221
|
description: Detects violations of a defined set of coding standards in PHP.
|
|
202
222
|
community: false
|
|
203
223
|
enable_regexps:
|
|
@@ -206,7 +226,8 @@ phpcodesniffer:
|
|
|
206
226
|
- "**.module"
|
|
207
227
|
- "**.inc"
|
|
208
228
|
phpmd:
|
|
209
|
-
|
|
229
|
+
channels:
|
|
230
|
+
stable: codeclimate/codeclimate-phpmd
|
|
210
231
|
description: A PHP static analysis tool.
|
|
211
232
|
community: false
|
|
212
233
|
upgrade_languages:
|
|
@@ -220,7 +241,8 @@ phpmd:
|
|
|
220
241
|
- "**.module"
|
|
221
242
|
- "**.inc"
|
|
222
243
|
radon:
|
|
223
|
-
|
|
244
|
+
channels:
|
|
245
|
+
stable: codeclimate/codeclimate-radon
|
|
224
246
|
description: Python tool used to compute Cyclomatic Complexity.
|
|
225
247
|
community: false
|
|
226
248
|
upgrade_languages:
|
|
@@ -230,7 +252,8 @@ radon:
|
|
|
230
252
|
default_ratings_paths:
|
|
231
253
|
- "**.py"
|
|
232
254
|
reek:
|
|
233
|
-
|
|
255
|
+
channels:
|
|
256
|
+
stable: codeclimate/codeclimate-reek
|
|
234
257
|
description: "Reek examines Ruby classes, modules, and methods and reports any code smells it finds."
|
|
235
258
|
community: true
|
|
236
259
|
upgrade_languages:
|
|
@@ -240,13 +263,15 @@ reek:
|
|
|
240
263
|
default_ratings_paths:
|
|
241
264
|
- "**.rb"
|
|
242
265
|
requiresafe:
|
|
243
|
-
|
|
266
|
+
channels:
|
|
267
|
+
stable: codeclimate/codeclimate-nodesecurity
|
|
244
268
|
description: Security tool for Node.js dependencies.
|
|
245
269
|
community: true
|
|
246
270
|
enable_regexps:
|
|
247
271
|
default_ratings_paths:
|
|
248
272
|
rubocop:
|
|
249
|
-
|
|
273
|
+
channels:
|
|
274
|
+
stable: codeclimate/codeclimate-rubocop
|
|
250
275
|
description: A Ruby static code analyzer, based on the community Ruby style guide.
|
|
251
276
|
community: false
|
|
252
277
|
upgrade_languages:
|
|
@@ -256,28 +281,32 @@ rubocop:
|
|
|
256
281
|
default_ratings_paths:
|
|
257
282
|
- "**.rb"
|
|
258
283
|
rubocop-v35:
|
|
259
|
-
|
|
284
|
+
channels:
|
|
285
|
+
stable: codeclimate/codeclimate-rubocop:v35
|
|
260
286
|
description: A Ruby static code analyzer, based on the community Ruby style guide. Version 0.35.1 of RuboCop.
|
|
261
287
|
community: false
|
|
262
288
|
enable_regexps:
|
|
263
289
|
default_ratings_paths:
|
|
264
290
|
- "**.rb"
|
|
265
291
|
rubymotion:
|
|
266
|
-
|
|
292
|
+
channels:
|
|
293
|
+
stable: codeclimate/codeclimate-rubymotion
|
|
267
294
|
description: Rubymotion-specific rubocop checks.
|
|
268
295
|
community: true
|
|
269
296
|
enable_regexps:
|
|
270
297
|
default_ratings_paths:
|
|
271
298
|
- "**.rb"
|
|
272
299
|
scss-lint:
|
|
273
|
-
|
|
300
|
+
channels:
|
|
301
|
+
stable: codeclimate/codeclimate-scss-lint
|
|
274
302
|
description: Configurable tool for writing clean and consistent SCSS.
|
|
275
303
|
community: true
|
|
276
304
|
enable_regexps:
|
|
277
305
|
default_ratings_paths:
|
|
278
306
|
- "**.scss"
|
|
279
307
|
shellcheck:
|
|
280
|
-
|
|
308
|
+
channels:
|
|
309
|
+
stable: codeclimate/codeclimate-shellcheck
|
|
281
310
|
description: A static analysis tool for shell scripts.
|
|
282
311
|
community: true
|
|
283
312
|
enable_regexps:
|
|
@@ -285,7 +314,8 @@ shellcheck:
|
|
|
285
314
|
default_ratings_paths:
|
|
286
315
|
- "**.sh"
|
|
287
316
|
tailor:
|
|
288
|
-
|
|
317
|
+
channels:
|
|
318
|
+
stable: codeclimate/codeclimate-tailor
|
|
289
319
|
description: Cross-platform static analyzer and linter for Swift.
|
|
290
320
|
community: true
|
|
291
321
|
enable_regexps:
|
|
@@ -293,14 +323,16 @@ tailor:
|
|
|
293
323
|
default_ratings_paths:
|
|
294
324
|
- "**.swift"
|
|
295
325
|
watson:
|
|
296
|
-
|
|
326
|
+
channels:
|
|
327
|
+
stable: codeclimate/codeclimate-watson
|
|
297
328
|
description: A young Ember Doctor to help you fix your code.
|
|
298
329
|
community: true
|
|
299
330
|
enable_regexps:
|
|
300
331
|
default_ratings_paths:
|
|
301
332
|
- "app/**"
|
|
302
333
|
vint:
|
|
303
|
-
|
|
334
|
+
channels:
|
|
335
|
+
stable: codeclimate/codeclimate-vint
|
|
304
336
|
description: Fast and Highly Extensible Vim script Language Lint implemented by Python.
|
|
305
337
|
community: true
|
|
306
338
|
enable_regexps:
|
data/lib/cc/analyzer/engine.rb
CHANGED
|
@@ -52,6 +52,11 @@ module CC
|
|
|
52
52
|
container.run(container_options).tap do |result|
|
|
53
53
|
CLI.debug("#{name} engine stderr: #{result.stderr}")
|
|
54
54
|
end
|
|
55
|
+
rescue Container::ImageRequired
|
|
56
|
+
# Provide a clearer message given the context we have
|
|
57
|
+
message = "Unable to find an image for #{name}:#{@config["channel"]}."
|
|
58
|
+
message << " Available channels: #{@metadata["channels"].keys.inspect}."
|
|
59
|
+
raise Container::ImageRequired, message
|
|
55
60
|
ensure
|
|
56
61
|
delete_config_file
|
|
57
62
|
end
|
|
@@ -3,6 +3,19 @@ require "securerandom"
|
|
|
3
3
|
module CC
|
|
4
4
|
module Analyzer
|
|
5
5
|
class EnginesConfigBuilder
|
|
6
|
+
class RegistryAdapter < SimpleDelegator
|
|
7
|
+
# Calling this is guarded by Registry#key?(name) so we can assume
|
|
8
|
+
# metadata itself will be present. We own the YAML loaded into the
|
|
9
|
+
# registry, so we can also assume the "channels" key will be present. We
|
|
10
|
+
# can't assume it will have a key for the given channel, but the nil
|
|
11
|
+
# value for the returned image key will trigger the desired error
|
|
12
|
+
# handling.
|
|
13
|
+
def fetch(name, channel)
|
|
14
|
+
metadata = self[name]
|
|
15
|
+
metadata.merge("image" => metadata["channels"][channel])
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
6
19
|
Result = Struct.new(
|
|
7
20
|
:name,
|
|
8
21
|
:registry_entry,
|
|
@@ -12,7 +25,7 @@ module CC
|
|
|
12
25
|
)
|
|
13
26
|
|
|
14
27
|
def initialize(registry:, config:, container_label:, source_dir:, requested_paths:)
|
|
15
|
-
@registry = registry
|
|
28
|
+
@registry = RegistryAdapter.new(registry)
|
|
16
29
|
@config = config
|
|
17
30
|
@container_label = container_label
|
|
18
31
|
@requested_paths = requested_paths
|
|
@@ -23,7 +36,8 @@ module CC
|
|
|
23
36
|
names_and_raw_engine_configs.map do |name, raw_engine_config|
|
|
24
37
|
label = @container_label || SecureRandom.uuid
|
|
25
38
|
engine_config = engine_config(raw_engine_config)
|
|
26
|
-
|
|
39
|
+
engine_metadata = @registry.fetch(name, raw_engine_config.channel)
|
|
40
|
+
Result.new(name, engine_metadata, @source_dir, engine_config, label)
|
|
27
41
|
end
|
|
28
42
|
end
|
|
29
43
|
|
|
@@ -2,11 +2,13 @@ module CC
|
|
|
2
2
|
module Analyzer
|
|
3
3
|
module Formatters
|
|
4
4
|
autoload :Formatter, "cc/analyzer/formatters/formatter"
|
|
5
|
+
autoload :HTMLFormatter, "cc/analyzer/formatters/html_formatter"
|
|
5
6
|
autoload :JSONFormatter, "cc/analyzer/formatters/json_formatter"
|
|
6
7
|
autoload :PlainTextFormatter, "cc/analyzer/formatters/plain_text_formatter"
|
|
7
8
|
autoload :Spinner, "cc/analyzer/formatters/spinner"
|
|
8
9
|
|
|
9
10
|
FORMATTERS = {
|
|
11
|
+
html: HTMLFormatter,
|
|
10
12
|
json: JSONFormatter,
|
|
11
13
|
text: PlainTextFormatter,
|
|
12
14
|
}.freeze
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require "redcarpet"
|
|
2
|
+
require "active_support/number_helper"
|
|
3
|
+
|
|
4
|
+
module CC
|
|
5
|
+
module Analyzer
|
|
6
|
+
module Formatters
|
|
7
|
+
class HTMLFormatter < Formatter
|
|
8
|
+
class ReportTemplate
|
|
9
|
+
include ERB::Util
|
|
10
|
+
attr_accessor :template, :issues, :issues_by_path
|
|
11
|
+
|
|
12
|
+
TEMPLATE_PATH = File.expand_path(File.join(File.dirname(__FILE__), "templates/html.erb"))
|
|
13
|
+
|
|
14
|
+
def initialize(issue_count, issues_by_path)
|
|
15
|
+
@template = File.read(TEMPLATE_PATH)
|
|
16
|
+
@issues_by_path = issues_by_path
|
|
17
|
+
@issue_count = issue_count
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def render
|
|
21
|
+
ERB.new(@template).result(binding)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def pluralize(number, noun)
|
|
25
|
+
"#{ActiveSupport::NumberHelper.number_to_delimited(number)} #{noun.pluralize(number)}"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def write(data)
|
|
30
|
+
json = JSON.parse(data)
|
|
31
|
+
json["engine_name"] = current_engine.name
|
|
32
|
+
|
|
33
|
+
case json["type"].downcase
|
|
34
|
+
when "issue"
|
|
35
|
+
issues << json
|
|
36
|
+
when "warning"
|
|
37
|
+
warnings << json
|
|
38
|
+
else
|
|
39
|
+
raise "Invalid type found: #{json["type"]}"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def finished
|
|
44
|
+
template = ReportTemplate.new(issues.length, issues_by_path)
|
|
45
|
+
puts template.render
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def failed(_)
|
|
49
|
+
exit 1
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def issues
|
|
55
|
+
@issues ||= []
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def issues_by_path
|
|
59
|
+
issues.group_by { |i| i["location"]["path"] }.sort.each do |_, file_issues|
|
|
60
|
+
IssueSorter.new(file_issues).by_location.map do |issue|
|
|
61
|
+
source_buffer = @filesystem.source_buffer_for(issue["location"]["path"])
|
|
62
|
+
issue["location"] = LocationDescription.new(source_buffer, issue["location"], "")
|
|
63
|
+
issue["description"] = render_readup_markdown(issue["description"])
|
|
64
|
+
if issue["content"]
|
|
65
|
+
issue["content"]["body"] = render_readup_markdown(issue["content"]["body"])
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def warnings
|
|
72
|
+
@warnings ||= []
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def render_readup_markdown(body)
|
|
76
|
+
html = Redcarpet::Render::HTML.new(escape_html: false, link_attributes: { target: "_blank" })
|
|
77
|
+
Redcarpet::Markdown.new(html, autolink: true, fenced_code_blocks: true, tables: true).render(body)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
data/lib/cc/cli/analyze.rb
CHANGED
|
@@ -83,10 +83,15 @@ module CC
|
|
|
83
83
|
|
|
84
84
|
def add_engine_options
|
|
85
85
|
engine_options.each do |engine|
|
|
86
|
+
name, channel = engine.split(":", 2)
|
|
87
|
+
|
|
86
88
|
if config.engines.include?(engine)
|
|
87
|
-
config.engines[
|
|
89
|
+
config.engines[name].enabled = true
|
|
90
|
+
config.engines[name].channel = channel if channel
|
|
88
91
|
else
|
|
89
|
-
|
|
92
|
+
value = { "enabled" => true }
|
|
93
|
+
value["channel"] = channel if channel
|
|
94
|
+
config.engines[name] = CC::Yaml::Nodes::Engine.new(config.engines).with_value(value)
|
|
90
95
|
end
|
|
91
96
|
end
|
|
92
97
|
end
|
|
@@ -16,8 +16,8 @@ module CC
|
|
|
16
16
|
def pull_docker_images
|
|
17
17
|
engine_names.each do |name|
|
|
18
18
|
if engine_registry.exists?(name)
|
|
19
|
-
|
|
20
|
-
pull_engine_image(image)
|
|
19
|
+
images = engine_registry[name]["channels"].values
|
|
20
|
+
images.each { |image| pull_engine_image(image) }
|
|
21
21
|
else
|
|
22
22
|
warn("unknown engine name: #{name}")
|
|
23
23
|
end
|
|
@@ -28,10 +28,6 @@ module CC
|
|
|
28
28
|
@engine_names ||= parsed_yaml.engine_names
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def engine_image(engine_name)
|
|
32
|
-
engine_registry_list[engine_name]["image"]
|
|
33
|
-
end
|
|
34
|
-
|
|
35
31
|
def pull_engine_image(engine_image)
|
|
36
32
|
unless system("docker pull #{engine_image}")
|
|
37
33
|
raise ImagePullFailure, "unable to pull image #{engine_image}"
|
data/lib/cc/cli/help.rb
CHANGED
data/lib/cc/cli/test.rb
CHANGED
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.
|
|
4
|
+
version: 0.30.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: 2016-05-
|
|
11
|
+
date: 2016-05-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -50,14 +50,14 @@ dependencies:
|
|
|
50
50
|
requirements:
|
|
51
51
|
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 0.
|
|
53
|
+
version: 0.9.0
|
|
54
54
|
type: :runtime
|
|
55
55
|
prerelease: false
|
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 0.
|
|
60
|
+
version: 0.9.0
|
|
61
61
|
- !ruby/object:Gem::Dependency
|
|
62
62
|
name: highline
|
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -132,6 +132,20 @@ dependencies:
|
|
|
132
132
|
- - ">="
|
|
133
133
|
- !ruby/object:Gem::Version
|
|
134
134
|
version: 2.0.0
|
|
135
|
+
- !ruby/object:Gem::Dependency
|
|
136
|
+
name: redcarpet
|
|
137
|
+
requirement: !ruby/object:Gem::Requirement
|
|
138
|
+
requirements:
|
|
139
|
+
- - "~>"
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: '3.2'
|
|
142
|
+
type: :runtime
|
|
143
|
+
prerelease: false
|
|
144
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
145
|
+
requirements:
|
|
146
|
+
- - "~>"
|
|
147
|
+
- !ruby/object:Gem::Version
|
|
148
|
+
version: '3.2'
|
|
135
149
|
description: Code Climate command line tool
|
|
136
150
|
email: hello@codeclimate.com
|
|
137
151
|
executables:
|
|
@@ -164,6 +178,7 @@ files:
|
|
|
164
178
|
- lib/cc/analyzer/filesystem.rb
|
|
165
179
|
- lib/cc/analyzer/formatters.rb
|
|
166
180
|
- lib/cc/analyzer/formatters/formatter.rb
|
|
181
|
+
- lib/cc/analyzer/formatters/html_formatter.rb
|
|
167
182
|
- lib/cc/analyzer/formatters/json_formatter.rb
|
|
168
183
|
- lib/cc/analyzer/formatters/plain_text_formatter.rb
|
|
169
184
|
- lib/cc/analyzer/formatters/spinner.rb
|