codeclimate 0.9.1 → 0.9.2
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/lib/cc/analyzer.rb +1 -0
- data/lib/cc/analyzer/engines.rb +73 -0
- data/lib/cc/analyzer/engines_runner.rb +9 -53
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dacbb140292d61911f693eddf47566cca79a8971
|
4
|
+
data.tar.gz: e3a2d03b2f9114d6e68a199461492ed5e1bcf380
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22f87e0b1980085a4b5a7db3471aa73bad2b7db36f88216ea33f79e15eeb32d33db8a743ed916213cf68bcd235955806a0be34a197033a5d8de7ee580ed91474
|
7
|
+
data.tar.gz: b1605896bb70d332f30da3c503ec0d57977ce7dd0d5565133368dc3596067c92833288a75f24c142957476c049550244170a50f0206484aa75f00b8b7e369012
|
data/lib/cc/analyzer.rb
CHANGED
@@ -5,6 +5,7 @@ module CC
|
|
5
5
|
autoload :Container, "cc/analyzer/container"
|
6
6
|
autoload :ContainerListener, "cc/analyzer/container_listener"
|
7
7
|
autoload :Engine, "cc/analyzer/engine"
|
8
|
+
autoload :Engines, "cc/analyzer/engines"
|
8
9
|
autoload :EngineOutputFilter, "cc/analyzer/engine_output_filter"
|
9
10
|
autoload :EngineRegistry, "cc/analyzer/engine_registry"
|
10
11
|
autoload :EnginesRunner, "cc/analyzer/engines_runner"
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require "securerandom"
|
2
|
+
|
3
|
+
module CC
|
4
|
+
module Analyzer
|
5
|
+
class Engines < Array
|
6
|
+
def initialize(registry:, config:, container_label:, source_dir:, requested_paths:)
|
7
|
+
super()
|
8
|
+
@registry = registry
|
9
|
+
@config = config
|
10
|
+
@container_label = container_label
|
11
|
+
@requested_paths = requested_paths
|
12
|
+
@source_dir = source_dir
|
13
|
+
names_and_raw_engine_configs.each do |name, raw_engine_config|
|
14
|
+
self << build_engine(name, raw_engine_config)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def build_engine(name, raw_engine_config)
|
21
|
+
label = @container_label || SecureRandom.uuid
|
22
|
+
engine_config = engine_config(raw_engine_config)
|
23
|
+
Engine.new(
|
24
|
+
name, @registry[name], @source_dir, engine_config, label
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def engine_config(raw_engine_config)
|
29
|
+
config = raw_engine_config.merge(
|
30
|
+
exclude_paths: exclude_paths,
|
31
|
+
include_paths: include_paths
|
32
|
+
)
|
33
|
+
# The yaml gem turns a config file string into a hash, but engines
|
34
|
+
# expect the string. So we (for now) need to turn it into a string in
|
35
|
+
# that one scenario.
|
36
|
+
# TODO: update the engines to expect the hash and then remove this.
|
37
|
+
if config.fetch("config", {}).keys.size == 1 && config["config"].key?("file")
|
38
|
+
config["config"] = config["config"]["file"]
|
39
|
+
end
|
40
|
+
config
|
41
|
+
end
|
42
|
+
|
43
|
+
def names_and_raw_engine_configs
|
44
|
+
{}.tap do |ret|
|
45
|
+
@config.engines.each do |name, raw_engine_config|
|
46
|
+
if raw_engine_config.enabled? && @registry.key?(name)
|
47
|
+
ret[name] = raw_engine_config
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def include_paths
|
54
|
+
IncludePathsBuilder.new(
|
55
|
+
@config.exclude_paths || [], @requested_paths
|
56
|
+
).build
|
57
|
+
end
|
58
|
+
|
59
|
+
def exclude_paths
|
60
|
+
PathPatterns.new(@config.exclude_paths || []).expanded +
|
61
|
+
gitignore_paths
|
62
|
+
end
|
63
|
+
|
64
|
+
def gitignore_paths
|
65
|
+
if File.exist?(".gitignore")
|
66
|
+
`git ls-files --others -i -z --exclude-from .gitignore`.split("\0")
|
67
|
+
else
|
68
|
+
[]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -31,63 +31,19 @@ module CC
|
|
31
31
|
|
32
32
|
attr_reader :requested_paths
|
33
33
|
|
34
|
-
def run_engine(engine, container_listener)
|
35
|
-
@formatter.engine_running(engine) do
|
36
|
-
engine.run(@formatter, container_listener)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
34
|
def engines
|
41
|
-
@engines ||=
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
def engine_config(config)
|
49
|
-
config = config.merge(
|
50
|
-
exclude_paths: exclude_paths,
|
51
|
-
include_paths: include_paths
|
35
|
+
@engines ||= Engines.new(
|
36
|
+
registry: @registry,
|
37
|
+
config: @config,
|
38
|
+
container_label: @container_label,
|
39
|
+
source_dir: @source_dir,
|
40
|
+
requested_paths: @requested_paths
|
52
41
|
)
|
53
|
-
|
54
|
-
# The yaml gem turns a config file string into a hash, but engines expect the string
|
55
|
-
# So we (for now) need to turn it into a string in that one scenario.
|
56
|
-
# TODO: update the engines to expect the hash and then remove this.
|
57
|
-
if config.fetch("config", {}).keys.size == 1 && config["config"].key?("file")
|
58
|
-
config["config"] = config["config"]["file"]
|
59
|
-
end
|
60
|
-
|
61
|
-
config
|
62
42
|
end
|
63
43
|
|
64
|
-
def
|
65
|
-
|
66
|
-
@
|
67
|
-
if config.enabled? && @registry.key?(name)
|
68
|
-
ret[name] = config
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def metadata(engine_name)
|
75
|
-
@registry[engine_name]
|
76
|
-
end
|
77
|
-
|
78
|
-
def include_paths
|
79
|
-
IncludePathsBuilder.new(@config.exclude_paths || [], requested_paths).build
|
80
|
-
end
|
81
|
-
|
82
|
-
def exclude_paths
|
83
|
-
PathPatterns.new(@config.exclude_paths || []).expanded + gitignore_paths
|
84
|
-
end
|
85
|
-
|
86
|
-
def gitignore_paths
|
87
|
-
if File.exist?(".gitignore")
|
88
|
-
`git ls-files --others -i -z --exclude-from .gitignore`.split("\0")
|
89
|
-
else
|
90
|
-
[]
|
44
|
+
def run_engine(engine, container_listener)
|
45
|
+
@formatter.engine_running(engine) do
|
46
|
+
engine.run(@formatter, container_listener)
|
91
47
|
end
|
92
48
|
end
|
93
49
|
end
|
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.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code Climate
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- lib/cc/analyzer/engine.rb
|
202
202
|
- lib/cc/analyzer/engine_output_filter.rb
|
203
203
|
- lib/cc/analyzer/engine_registry.rb
|
204
|
+
- lib/cc/analyzer/engines.rb
|
204
205
|
- lib/cc/analyzer/engines_runner.rb
|
205
206
|
- lib/cc/analyzer/filesystem.rb
|
206
207
|
- lib/cc/analyzer/formatters.rb
|
@@ -256,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
257
|
version: '0'
|
257
258
|
requirements: []
|
258
259
|
rubyforge_project:
|
259
|
-
rubygems_version: 2.4.
|
260
|
+
rubygems_version: 2.4.8
|
260
261
|
signing_key:
|
261
262
|
specification_version: 4
|
262
263
|
summary: Code Climate CLI
|