codeclimate 0.9.7 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/prep-release +3 -2
- data/config/engines.yml +8 -1
- data/lib/cc/analyzer/config.rb +16 -3
- data/lib/cc/analyzer/container.rb +3 -3
- data/lib/cc/analyzer/engine.rb +1 -1
- data/lib/cc/analyzer/engine_registry.rb +0 -1
- data/lib/cc/analyzer/engines.rb +1 -1
- data/lib/cc/analyzer/engines_runner.rb +1 -1
- data/lib/cc/analyzer/filesystem.rb +1 -2
- data/lib/cc/analyzer/formatters.rb +3 -3
- data/lib/cc/analyzer/formatters/formatter.rb +2 -2
- data/lib/cc/analyzer/formatters/json_formatter.rb +0 -1
- data/lib/cc/analyzer/formatters/plain_text_formatter.rb +7 -8
- data/lib/cc/analyzer/source_buffer.rb +6 -8
- data/lib/cc/cli/analyze.rb +6 -6
- data/lib/cc/cli/command.rb +3 -3
- data/lib/cc/cli/config.rb +1 -1
- data/lib/cc/cli/engines/install.rb +1 -1
- data/lib/cc/cli/engines/list.rb +1 -1
- data/lib/cc/cli/help.rb +2 -2
- data/lib/cc/cli/init.rb +4 -4
- data/lib/cc/cli/runner.rb +2 -4
- data/lib/cc/cli/version.rb +1 -0
- data/lib/file_utils_ext.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7e316d10f1c30a533dd6bf12bec7489f950922a
|
4
|
+
data.tar.gz: 86754e8553d9286b76ade07489d0a3561e979d2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4a5711db9e980d5f061a40e207ae56d3882d1c540da778afc2cab5652e7fdd5c5ae217bae3f920e8f3095ee161976b0fd347598739e2db15babd899285ac5ad
|
7
|
+
data.tar.gz: 88b6924d353f1c61ac3dc59aae914ad809e1fdccb9683a01d8fa4f47dd6b35cf7a0e9b6cde45b9febb304e01a37619b9eb700fdc2029601d571b9c6726682f15
|
data/bin/prep-release
CHANGED
@@ -14,6 +14,7 @@ fi
|
|
14
14
|
|
15
15
|
version=$1
|
16
16
|
old_version=$(< VERSION)
|
17
|
+
branch="release-$version"
|
17
18
|
|
18
19
|
if ! bundle exec rake; then
|
19
20
|
echo "test failure, not releasing" >&2
|
@@ -24,13 +25,13 @@ printf "RELEASE %s => %s\n" "$old_version" "$version"
|
|
24
25
|
git checkout master
|
25
26
|
git pull
|
26
27
|
|
27
|
-
git checkout -b
|
28
|
+
git checkout -b $branch
|
28
29
|
|
29
30
|
printf "%s\n" "$version" > VERSION
|
30
31
|
bundle
|
31
32
|
git add VERSION Gemfile.lock
|
32
33
|
git commit -m "Release v$version"
|
33
|
-
git push
|
34
|
+
git push origin $branch
|
34
35
|
|
35
36
|
if command -v gh > /dev/null 2>&1; then
|
36
37
|
gh pull-request -m "Release v$version"
|
data/config/engines.yml
CHANGED
@@ -25,6 +25,12 @@ duplication:
|
|
25
25
|
community: false
|
26
26
|
enable_regexps:
|
27
27
|
default_ratings_paths:
|
28
|
+
default_config:
|
29
|
+
languages:
|
30
|
+
- ruby
|
31
|
+
- javascript
|
32
|
+
- python
|
33
|
+
- php
|
28
34
|
gofmt:
|
29
35
|
image: codeclimate/codeclimate-gofmt
|
30
36
|
description: gofmt
|
@@ -134,7 +140,8 @@ fixme:
|
|
134
140
|
description: Find FIXME, TODO, HACK, etc. comments
|
135
141
|
community: false
|
136
142
|
enable_regexps:
|
137
|
-
|
143
|
+
- .+
|
144
|
+
default_ratings_paths: []
|
138
145
|
foodcritic:
|
139
146
|
image: codeclimate/codeclimate-foodcritic
|
140
147
|
description: Lint tool for Chef cookbooks
|
data/lib/cc/analyzer/config.rb
CHANGED
@@ -5,7 +5,7 @@ module CC
|
|
5
5
|
# TODO: replace each use of this with CC::Yaml and remove it
|
6
6
|
class Config
|
7
7
|
def initialize(config_body)
|
8
|
-
@config = YAML.safe_load(config_body) || {"engines"=> {} }
|
8
|
+
@config = YAML.safe_load(config_body) || { "engines" => {} }
|
9
9
|
@config["engines"] ||= {}
|
10
10
|
|
11
11
|
expand_shorthand
|
@@ -35,7 +35,10 @@ module CC
|
|
35
35
|
if engine_present?(engine_name)
|
36
36
|
@config["engines"][engine_name]["enabled"] = true
|
37
37
|
else
|
38
|
-
@config["engines"][engine_name] = {
|
38
|
+
@config["engines"][engine_name] = {
|
39
|
+
"enabled" => true,
|
40
|
+
"config" => default_config(engine_name),
|
41
|
+
}
|
39
42
|
end
|
40
43
|
end
|
41
44
|
|
@@ -59,7 +62,7 @@ module CC
|
|
59
62
|
@config.to_yaml
|
60
63
|
end
|
61
64
|
|
62
|
-
|
65
|
+
private
|
63
66
|
|
64
67
|
def expand_shorthand
|
65
68
|
@config["engines"].each do |name, engine_config|
|
@@ -68,6 +71,16 @@ module CC
|
|
68
71
|
end
|
69
72
|
end
|
70
73
|
end
|
74
|
+
|
75
|
+
def default_config(engine_name)
|
76
|
+
if (engine_config = engine_registry[engine_name])
|
77
|
+
engine_config["default_config"]
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def engine_registry
|
82
|
+
@engine_registry ||= CC::Analyzer::EngineRegistry.new
|
83
|
+
end
|
71
84
|
end
|
72
85
|
end
|
73
86
|
end
|
@@ -28,7 +28,7 @@ module CC
|
|
28
28
|
@listener = listener
|
29
29
|
@timeout = timeout
|
30
30
|
@output_delimeter = "\n"
|
31
|
-
@on_output = ->(*) {
|
31
|
+
@on_output = ->(*) {}
|
32
32
|
@timed_out = false
|
33
33
|
@stderr_io = StringIO.new
|
34
34
|
end
|
@@ -68,7 +68,7 @@ module CC
|
|
68
68
|
|
69
69
|
def stop
|
70
70
|
# Prevents the processing of more output after first error
|
71
|
-
@on_output = ->(*) {
|
71
|
+
@on_output = ->(*) {}
|
72
72
|
|
73
73
|
reap_running_container
|
74
74
|
end
|
@@ -82,7 +82,7 @@ module CC
|
|
82
82
|
"--name", @name,
|
83
83
|
options,
|
84
84
|
@image,
|
85
|
-
@command
|
85
|
+
@command
|
86
86
|
].flatten.compact
|
87
87
|
end
|
88
88
|
|
data/lib/cc/analyzer/engine.rb
CHANGED
data/lib/cc/analyzer/engines.rb
CHANGED
@@ -28,7 +28,7 @@ module CC
|
|
28
28
|
def engine_config(raw_engine_config)
|
29
29
|
config = raw_engine_config.merge(
|
30
30
|
exclude_paths: exclude_paths,
|
31
|
-
include_paths: include_paths
|
31
|
+
include_paths: include_paths,
|
32
32
|
)
|
33
33
|
# The yaml gem turns a config file string into a hash, but engines
|
34
34
|
# expect the string. So we (for now) need to turn it into a string in
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module CC
|
2
2
|
module Analyzer
|
3
3
|
class Filesystem
|
4
|
-
|
5
4
|
def initialize(root)
|
6
5
|
@root = root
|
7
6
|
end
|
@@ -40,7 +39,7 @@ module CC
|
|
40
39
|
def file_paths
|
41
40
|
@file_paths ||= Dir.chdir(@root) do
|
42
41
|
`find . -type f -print0`.strip.split("\0").map do |path|
|
43
|
-
path.sub(
|
42
|
+
path.sub(%r{^\.\/}, "")
|
44
43
|
end
|
45
44
|
end
|
46
45
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module CC
|
2
2
|
module Analyzer
|
3
3
|
module Formatters
|
4
|
-
autoload :Formatter,
|
4
|
+
autoload :Formatter, "cc/analyzer/formatters/formatter"
|
5
5
|
autoload :JSONFormatter, "cc/analyzer/formatters/json_formatter"
|
6
|
-
autoload :PlainTextFormatter,
|
6
|
+
autoload :PlainTextFormatter, "cc/analyzer/formatters/plain_text_formatter"
|
7
7
|
autoload :Spinner, "cc/analyzer/formatters/spinner"
|
8
8
|
|
9
9
|
FORMATTERS = {
|
@@ -12,7 +12,7 @@ module CC
|
|
12
12
|
}.freeze
|
13
13
|
|
14
14
|
def self.resolve(name)
|
15
|
-
FORMATTERS[name.to_sym] or raise InvalidFormatterError, "'#{name}' is not a valid formatter. Valid options are: #{FORMATTERS.keys.join(
|
15
|
+
FORMATTERS[name.to_sym] or raise InvalidFormatterError, "'#{name}' is not a valid formatter. Valid options are: #{FORMATTERS.keys.join(', ')}"
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -7,7 +7,7 @@ module CC
|
|
7
7
|
@output = output
|
8
8
|
end
|
9
9
|
|
10
|
-
def write(
|
10
|
+
def write(_data)
|
11
11
|
end
|
12
12
|
|
13
13
|
def started
|
@@ -26,7 +26,7 @@ module CC
|
|
26
26
|
def close
|
27
27
|
end
|
28
28
|
|
29
|
-
def failed(
|
29
|
+
def failed(_output)
|
30
30
|
end
|
31
31
|
|
32
32
|
InvalidFormatterError = Class.new(StandardError)
|
@@ -6,7 +6,6 @@ module CC
|
|
6
6
|
module Analyzer
|
7
7
|
module Formatters
|
8
8
|
class PlainTextFormatter < Formatter
|
9
|
-
|
10
9
|
def started
|
11
10
|
puts colorize("Starting analysis", :green)
|
12
11
|
end
|
@@ -21,7 +20,7 @@ module CC
|
|
21
20
|
when "warning"
|
22
21
|
warnings << json
|
23
22
|
else
|
24
|
-
raise "Invalid type found: #{json[
|
23
|
+
raise "Invalid type found: #{json['type']}"
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
@@ -29,24 +28,24 @@ module CC
|
|
29
28
|
puts
|
30
29
|
|
31
30
|
issues_by_path.each do |path, file_issues|
|
32
|
-
puts colorize("== #{path} (#{pluralize(file_issues.size,
|
31
|
+
puts colorize("== #{path} (#{pluralize(file_issues.size, 'issue')}) ==", :yellow)
|
33
32
|
|
34
33
|
IssueSorter.new(file_issues).by_location.each do |issue|
|
35
|
-
if location = issue["location"]
|
34
|
+
if (location = issue["location"])
|
36
35
|
source_buffer = @filesystem.source_buffer_for(location["path"])
|
37
36
|
print(colorize(LocationDescription.new(source_buffer, location, ": "), :cyan))
|
38
37
|
end
|
39
38
|
|
40
39
|
print(issue["description"])
|
41
|
-
print(colorize(" [#{issue[
|
40
|
+
print(colorize(" [#{issue['engine_name']}]", "#333333"))
|
42
41
|
puts
|
43
42
|
end
|
44
43
|
puts
|
45
44
|
end
|
46
45
|
|
47
|
-
print(colorize("Analysis complete! Found #{pluralize(issues.size,
|
46
|
+
print(colorize("Analysis complete! Found #{pluralize(issues.size, 'issue')}", :green))
|
48
47
|
if warnings.size > 0
|
49
|
-
print(colorize(" and #{pluralize(warnings.size,
|
48
|
+
print(colorize(" and #{pluralize(warnings.size, 'warning')}", :green))
|
50
49
|
end
|
51
50
|
puts(colorize(".", :green))
|
52
51
|
end
|
@@ -93,7 +92,7 @@ module CC
|
|
93
92
|
end
|
94
93
|
|
95
94
|
def issues_by_path
|
96
|
-
issues.group_by { |i| i[
|
95
|
+
issues.group_by { |i| i["location"]["path"] }.sort
|
97
96
|
end
|
98
97
|
|
99
98
|
def warnings
|
@@ -13,29 +13,28 @@ module CC
|
|
13
13
|
def decompose_position(position)
|
14
14
|
line_no, line_begin = line_for(position)
|
15
15
|
|
16
|
-
[
|
16
|
+
[1 + line_no, position - line_begin]
|
17
17
|
end
|
18
18
|
|
19
19
|
def line_count
|
20
20
|
@source.lines.count
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
private
|
24
24
|
|
25
25
|
def line_for(position)
|
26
|
-
line_begins.bsearch do |
|
26
|
+
line_begins.bsearch do |_, line_begin|
|
27
27
|
line_begin <= position
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
def line_begins
|
32
32
|
unless @line_begins
|
33
|
-
@line_begins
|
33
|
+
@line_begins = [[0, 0]]
|
34
|
+
index = 1
|
34
35
|
|
35
36
|
@source.each_char do |char|
|
36
|
-
if char == "\n"
|
37
|
-
@line_begins.unshift [ @line_begins.length, index ]
|
38
|
-
end
|
37
|
+
@line_begins.unshift [@line_begins.length, index] if char == "\n"
|
39
38
|
|
40
39
|
index += 1
|
41
40
|
end
|
@@ -43,7 +42,6 @@ module CC
|
|
43
42
|
|
44
43
|
@line_begins
|
45
44
|
end
|
46
|
-
|
47
45
|
end
|
48
46
|
end
|
49
47
|
end
|
data/lib/cc/cli/analyze.rb
CHANGED
@@ -15,7 +15,7 @@ module CC
|
|
15
15
|
def run
|
16
16
|
require_codeclimate_yml
|
17
17
|
|
18
|
-
Dir.chdir(ENV[
|
18
|
+
Dir.chdir(ENV["FILESYSTEM_DIR"]) do
|
19
19
|
runner = EnginesRunner.new(registry, formatter, source_dir, config, path_options)
|
20
20
|
runner.run
|
21
21
|
end
|
@@ -32,13 +32,13 @@ module CC
|
|
32
32
|
attr_reader :engine_options, :path_options
|
33
33
|
|
34
34
|
def process_args
|
35
|
-
while arg = @args.shift
|
35
|
+
while (arg = @args.shift)
|
36
36
|
case arg
|
37
|
-
when
|
37
|
+
when "-f"
|
38
38
|
@formatter = Formatters.resolve(@args.shift).new(filesystem)
|
39
|
-
when
|
39
|
+
when "-e", "--engine"
|
40
40
|
@engine_options << @args.shift
|
41
|
-
when
|
41
|
+
when "--dev"
|
42
42
|
@dev_mode = true
|
43
43
|
else
|
44
44
|
@path_options << arg
|
@@ -86,7 +86,7 @@ module CC
|
|
86
86
|
if config.engines.include?(engine)
|
87
87
|
config.engines[engine].enabled = true
|
88
88
|
else
|
89
|
-
config.engines[engine] = CC::Yaml::Nodes::Engine.new(config.engines).with_value(
|
89
|
+
config.engines[engine] = CC::Yaml::Nodes::Engine.new(config.engines).with_value("enabled" => true)
|
90
90
|
end
|
91
91
|
end
|
92
92
|
end
|
data/lib/cc/cli/command.rb
CHANGED
@@ -17,7 +17,7 @@ module CC
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.command_name
|
20
|
-
name[/[^:]*$/].split(/(?=[A-Z])/).map(&:downcase).join(
|
20
|
+
name[/[^:]*$/].split(/(?=[A-Z])/).map(&:downcase).join("-")
|
21
21
|
end
|
22
22
|
|
23
23
|
def execute
|
@@ -38,7 +38,7 @@ module CC
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def require_codeclimate_yml
|
41
|
-
|
41
|
+
unless filesystem.exist?(CODECLIMATE_YAML)
|
42
42
|
fatal("No '.codeclimate.yml' file found. Run 'codeclimate init' to generate a config file.")
|
43
43
|
end
|
44
44
|
end
|
@@ -54,7 +54,7 @@ module CC
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def filesystem
|
57
|
-
@filesystem ||= CC::Analyzer::Filesystem.new(ENV[
|
57
|
+
@filesystem ||= CC::Analyzer::Filesystem.new(ENV["FILESYSTEM_DIR"])
|
58
58
|
end
|
59
59
|
|
60
60
|
def terminal
|
data/lib/cc/cli/config.rb
CHANGED
data/lib/cc/cli/engines/list.rb
CHANGED
data/lib/cc/cli/help.rb
CHANGED
data/lib/cc/cli/init.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "cc/cli/config"
|
2
|
+
require "cc/cli/config_generator"
|
3
|
+
require "cc/cli/upgrade_config_generator"
|
4
4
|
|
5
5
|
module CC
|
6
6
|
module CLI
|
@@ -54,7 +54,7 @@ module CC
|
|
54
54
|
Dir.glob("#{engine_directory}/*", File::FNM_DOTMATCH)
|
55
55
|
end
|
56
56
|
|
57
|
-
all_paths.reject { |path| [
|
57
|
+
all_paths.reject { |path| [".", ".."].include?(File.basename(path)) }
|
58
58
|
end
|
59
59
|
|
60
60
|
def engines_enabled?
|
data/lib/cc/cli/runner.rb
CHANGED
@@ -5,7 +5,6 @@ require "safe_yaml"
|
|
5
5
|
module CC
|
6
6
|
module CLI
|
7
7
|
class Runner
|
8
|
-
|
9
8
|
def self.run(argv)
|
10
9
|
new(argv).run
|
11
10
|
rescue => ex
|
@@ -44,8 +43,8 @@ module CC
|
|
44
43
|
|
45
44
|
def command_name
|
46
45
|
case command
|
47
|
-
when nil,
|
48
|
-
when
|
46
|
+
when nil, "-h", "-?", "--help" then "Help"
|
47
|
+
when "-v", "--version" then "Version"
|
49
48
|
else command.sub(":", "::").underscore.camelize
|
50
49
|
end
|
51
50
|
end
|
@@ -57,7 +56,6 @@ module CC
|
|
57
56
|
def command
|
58
57
|
@args.first
|
59
58
|
end
|
60
|
-
|
61
59
|
end
|
62
60
|
end
|
63
61
|
end
|
data/lib/cc/cli/version.rb
CHANGED
data/lib/file_utils_ext.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.10.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: 2015-10-
|
11
|
+
date: 2015-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|