skunk 0.3.2 → 0.5.1
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/.github/ISSUE_TEMPLATE/bug_report.md +53 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +47 -0
- data/.github/workflows/main.yml +89 -0
- data/.github/workflows/skunk.yml +29 -0
- data/.gitignore +1 -0
- data/.reek.yml +2 -7
- data/.rubocop_todo.yml +41 -18
- data/CHANGELOG.md +46 -6
- data/CODEOWNERS +5 -0
- data/Gemfile-Ruby-2-4 +10 -0
- data/README.md +78 -25
- data/fastruby-logo.png +0 -0
- data/lib/skunk.rb +1 -1
- data/lib/skunk/cli/application.rb +34 -4
- data/lib/skunk/cli/commands/base.rb +2 -0
- data/lib/skunk/cli/commands/compare.rb +52 -30
- data/lib/skunk/cli/commands/compare_score.rb +41 -0
- data/lib/skunk/cli/commands/default.rb +14 -1
- data/lib/skunk/cli/commands/help.rb +11 -1
- data/lib/skunk/cli/commands/output.rb +12 -0
- data/lib/skunk/cli/commands/shareable.rb +21 -0
- data/lib/skunk/cli/commands/status_reporter.rb +23 -16
- data/lib/skunk/cli/commands/status_sharer.rb +99 -0
- data/lib/skunk/cli/commands/version.rb +16 -0
- data/lib/skunk/cli/options/argv.rb +11 -7
- data/lib/skunk/rubycritic/analysed_module.rb +30 -10
- data/lib/skunk/rubycritic/analysed_modules_collection.rb +2 -2
- data/lib/skunk/version.rb +1 -1
- data/logo.png +0 -0
- data/samples/engines/spec/nested_sample_spec.rb +5 -0
- data/samples/rubycritic/analysed_module.rb +9 -9
- data/skunk.gemspec +14 -8
- metadata +105 -30
- data/.travis.yml +0 -5
- data/Gemfile.lock +0 -119
- data/bin/console +0 -16
- data/bin/setup +0 -8
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rubycritic/commands/version"
|
4
|
+
|
5
|
+
# nodoc #
|
6
|
+
module Skunk
|
7
|
+
module Command
|
8
|
+
# Shows skunk version
|
9
|
+
class Version < RubyCritic::Command::Version
|
10
|
+
def execute
|
11
|
+
print Skunk::VERSION
|
12
|
+
status_reporter
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -9,23 +9,23 @@ module Skunk
|
|
9
9
|
# Extends RubyCritic::Cli::Options::Argv to parse a subset of the
|
10
10
|
# parameters accepted by RubyCritic
|
11
11
|
class Argv < RubyCritic::Cli::Options::Argv
|
12
|
+
# :reek:Attribute
|
13
|
+
attr_accessor :output_filename
|
14
|
+
|
12
15
|
def parse # rubocop:disable Metrics/MethodLength
|
13
16
|
parser.new do |opts|
|
14
17
|
opts.banner = "Usage: skunk [options] [paths]\n"
|
15
18
|
|
16
|
-
opts.on(
|
17
|
-
"-p", "--path [PATH]",
|
18
|
-
"Set path where report will be saved (tmp/skunk by default)"
|
19
|
-
) do |path|
|
20
|
-
@root = path
|
21
|
-
end
|
22
|
-
|
23
19
|
opts.on("-b", "--branch BRANCH", "Set branch to compare") do |branch|
|
24
20
|
self.base_branch = String(branch)
|
25
21
|
set_current_branch
|
26
22
|
self.mode = :compare_branches
|
27
23
|
end
|
28
24
|
|
25
|
+
opts.on("-o", "--out FILE", "Output report to file") do |filename|
|
26
|
+
self.output_filename = filename
|
27
|
+
end
|
28
|
+
|
29
29
|
opts.on_tail("-v", "--version", "Show gem's version") do
|
30
30
|
self.mode = :version
|
31
31
|
end
|
@@ -35,6 +35,10 @@ module Skunk
|
|
35
35
|
end
|
36
36
|
end.parse!(@argv)
|
37
37
|
end
|
38
|
+
|
39
|
+
def to_h
|
40
|
+
super.merge(output_filename: output_filename)
|
41
|
+
end
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
@@ -3,34 +3,34 @@
|
|
3
3
|
require "rubycritic/core/analysed_module"
|
4
4
|
|
5
5
|
module RubyCritic
|
6
|
-
# Monkey-patches RubyCritic::AnalysedModule to add a
|
6
|
+
# Monkey-patches RubyCritic::AnalysedModule to add a skunk_score method
|
7
7
|
class AnalysedModule
|
8
8
|
PERFECT_COVERAGE = 100
|
9
9
|
|
10
|
-
# Returns a numeric value that represents the
|
10
|
+
# Returns a numeric value that represents the skunk_score of a module:
|
11
11
|
#
|
12
|
-
# If module is perfectly covered,
|
12
|
+
# If module is perfectly covered, skunk score is the same as the
|
13
13
|
# `churn_times_cost`
|
14
14
|
#
|
15
|
-
# If module has no coverage,
|
15
|
+
# If module has no coverage, skunk score is a penalized value of
|
16
16
|
# `churn_times_cost`
|
17
17
|
#
|
18
|
-
# For now the
|
18
|
+
# For now the skunk_score is calculated by multiplying `churn_times_cost`
|
19
19
|
# times the lack of coverage.
|
20
20
|
#
|
21
21
|
# For example:
|
22
22
|
#
|
23
23
|
# When `churn_times_cost` is 100 and module is perfectly covered:
|
24
|
-
#
|
24
|
+
# skunk_score => 100
|
25
25
|
#
|
26
26
|
# When `churn_times_cost` is 100 and module is not covered at all:
|
27
|
-
#
|
27
|
+
# skunk_score => 100 * 100 = 10_000
|
28
28
|
#
|
29
29
|
# When `churn_times_cost` is 100 and module is covered at 75%:
|
30
|
-
#
|
30
|
+
# skunk_score => 100 * 25 (percentage uncovered) = 2_500
|
31
31
|
#
|
32
32
|
# @return [Float]
|
33
|
-
def
|
33
|
+
def skunk_score
|
34
34
|
return cost.round(2) if coverage == PERFECT_COVERAGE
|
35
35
|
|
36
36
|
(cost * (PERFECT_COVERAGE - coverage.to_i)).round(2)
|
@@ -41,7 +41,27 @@ module RubyCritic
|
|
41
41
|
# @return [Integer]
|
42
42
|
def churn_times_cost
|
43
43
|
safe_churn = churn.positive? ? churn : 1
|
44
|
-
@churn_times_cost ||= safe_churn * cost
|
44
|
+
@churn_times_cost ||= (safe_churn * cost).round(2)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Returns a hash with these attributes:
|
48
|
+
# - file
|
49
|
+
# - skunk_score
|
50
|
+
# - churn_times_cost
|
51
|
+
# - churn
|
52
|
+
# - cost
|
53
|
+
# - coverage
|
54
|
+
#
|
55
|
+
# @return [Hash]
|
56
|
+
def to_hash
|
57
|
+
{
|
58
|
+
file: pathname.to_s,
|
59
|
+
skunk_score: skunk_score,
|
60
|
+
churn_times_cost: churn_times_cost,
|
61
|
+
churn: churn,
|
62
|
+
cost: cost.round(2),
|
63
|
+
coverage: coverage.round(2)
|
64
|
+
}
|
45
65
|
end
|
46
66
|
end
|
47
67
|
end
|
@@ -5,10 +5,10 @@ require "rubycritic/core/analysed_modules_collection"
|
|
5
5
|
module RubyCritic
|
6
6
|
# nodoc #
|
7
7
|
class AnalysedModulesCollection
|
8
|
-
def
|
8
|
+
def skunk_score_average
|
9
9
|
num_modules = @modules.size
|
10
10
|
if num_modules.positive?
|
11
|
-
|
11
|
+
sum(&:skunk_score) / num_modules.to_f
|
12
12
|
else
|
13
13
|
0.0
|
14
14
|
end
|
data/lib/skunk/version.rb
CHANGED
data/logo.png
ADDED
Binary file
|
@@ -3,34 +3,34 @@
|
|
3
3
|
require "rubycritic/core/analysed_module"
|
4
4
|
|
5
5
|
module RubyCritic
|
6
|
-
# Monkey-patches RubyCritic::AnalysedModule to add a
|
6
|
+
# Monkey-patches RubyCritic::AnalysedModule to add a skunk_score method
|
7
7
|
class AnalysedModule
|
8
8
|
PERFECT_COVERAGE = 100
|
9
9
|
|
10
|
-
# Returns a numeric value that represents the
|
10
|
+
# Returns a numeric value that represents the skunk_score of a module:
|
11
11
|
#
|
12
|
-
# If module is perfectly covered,
|
12
|
+
# If module is perfectly covered, skunk score is the same as the
|
13
13
|
# `churn_times_cost`
|
14
14
|
#
|
15
|
-
# If module has no coverage,
|
15
|
+
# If module has no coverage, skunk score is a penalized value of
|
16
16
|
# `churn_times_cost`
|
17
17
|
#
|
18
|
-
# For now the
|
18
|
+
# For now the skunk_score is calculated by multiplying `churn_times_cost`
|
19
19
|
# times the lack of coverage.
|
20
20
|
#
|
21
21
|
# For example:
|
22
22
|
#
|
23
23
|
# When `churn_times_cost` is 100 and module is perfectly covered:
|
24
|
-
#
|
24
|
+
# skunk_score => 100
|
25
25
|
#
|
26
26
|
# When `churn_times_cost` is 100 and module is not covered at all:
|
27
|
-
#
|
27
|
+
# skunk_score => 100 * 100 = 10_000
|
28
28
|
#
|
29
29
|
# When `churn_times_cost` is 100 and module is covered at 75%:
|
30
|
-
#
|
30
|
+
# skunk_score => 100 * 25 (percentage uncovered) = 2_500
|
31
31
|
#
|
32
32
|
# @return [Float]
|
33
|
-
def
|
33
|
+
def skunk_score
|
34
34
|
return cost.round(2) if coverage == PERFECT_COVERAGE
|
35
35
|
|
36
36
|
(cost * (PERFECT_COVERAGE - coverage.to_i)).round(2)
|
data/skunk.gemspec
CHANGED
@@ -11,9 +11,11 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.email = ["ernesto+github@ombulabs.com"]
|
12
12
|
spec.licenses = ["MIT"]
|
13
13
|
spec.summary = "A library to assess code quality vs. code coverage"
|
14
|
-
spec.description = "Knows how to calculate the
|
14
|
+
spec.description = "Knows how to calculate the SkunkScore for a set of Ruby modules"
|
15
15
|
spec.homepage = "https://github.com/fastruby/skunk"
|
16
16
|
|
17
|
+
spec.required_ruby_version = [">= 2.4.0", "< 3.1.0"]
|
18
|
+
|
17
19
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
20
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
21
|
if spec.respond_to?(:metadata)
|
@@ -30,22 +32,26 @@ Gem::Specification.new do |spec|
|
|
30
32
|
# Specify which files should be added to the gem when it is released.
|
31
33
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
32
34
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
33
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
35
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|test|spec|features)/}) }
|
34
36
|
end
|
35
37
|
spec.bindir = "exe"
|
36
38
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
39
|
spec.require_paths = ["lib"]
|
38
40
|
|
39
|
-
spec.add_dependency "rubycritic", "
|
41
|
+
spec.add_dependency "rubycritic", ">= 4.5.2", "< 5.0"
|
40
42
|
spec.add_dependency "terminal-table", "~> 1.8.0"
|
41
43
|
|
42
|
-
spec.add_development_dependency "bundler", "~> 2.0"
|
43
44
|
spec.add_development_dependency "byebug", "~> 11"
|
45
|
+
spec.add_development_dependency "codecov", "~> 0.1.16"
|
44
46
|
spec.add_development_dependency "minitest", "~> 5.8.4"
|
45
47
|
spec.add_development_dependency "minitest-around", "~> 0.5.0"
|
46
|
-
spec.add_development_dependency "
|
47
|
-
spec.add_development_dependency "
|
48
|
-
spec.add_development_dependency "
|
49
|
-
spec.add_development_dependency "
|
48
|
+
spec.add_development_dependency "minitest-stub_any_instance", "~> 1.0.2"
|
49
|
+
spec.add_development_dependency "minitest-stub-const", "~> 0.6"
|
50
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
51
|
+
spec.add_development_dependency "reek", "~> 6.0.0"
|
52
|
+
spec.add_development_dependency "rubocop", "~> 1.0"
|
53
|
+
spec.add_development_dependency "simplecov", "~> 0.18"
|
50
54
|
spec.add_development_dependency "simplecov-console", "0.5.0"
|
55
|
+
spec.add_development_dependency "vcr", "~> 6.0.0"
|
56
|
+
spec.add_development_dependency "webmock", "~> 3.10.0"
|
51
57
|
end
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skunk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ernesto Tagwerker
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubycritic
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.5.2
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: '5.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.2
|
29
|
+
version: 4.5.2
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: terminal-table
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,33 +45,33 @@ dependencies:
|
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: 1.8.0
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: byebug
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
53
|
+
version: '11'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
60
|
+
version: '11'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: codecov
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
67
|
+
version: 0.1.16
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
74
|
+
version: 0.1.16
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: minitest
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,46 +100,74 @@ dependencies:
|
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
102
|
version: 0.5.0
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: minitest-stub_any_instance
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.0.2
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.0.2
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: minitest-stub-const
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0.6'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0.6'
|
97
131
|
- !ruby/object:Gem::Dependency
|
98
132
|
name: rake
|
99
133
|
requirement: !ruby/object:Gem::Requirement
|
100
134
|
requirements:
|
101
135
|
- - "~>"
|
102
136
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
137
|
+
version: '13.0'
|
104
138
|
type: :development
|
105
139
|
prerelease: false
|
106
140
|
version_requirements: !ruby/object:Gem::Requirement
|
107
141
|
requirements:
|
108
142
|
- - "~>"
|
109
143
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
144
|
+
version: '13.0'
|
111
145
|
- !ruby/object:Gem::Dependency
|
112
146
|
name: reek
|
113
147
|
requirement: !ruby/object:Gem::Requirement
|
114
148
|
requirements:
|
115
149
|
- - "~>"
|
116
150
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
151
|
+
version: 6.0.0
|
118
152
|
type: :development
|
119
153
|
prerelease: false
|
120
154
|
version_requirements: !ruby/object:Gem::Requirement
|
121
155
|
requirements:
|
122
156
|
- - "~>"
|
123
157
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
158
|
+
version: 6.0.0
|
125
159
|
- !ruby/object:Gem::Dependency
|
126
160
|
name: rubocop
|
127
161
|
requirement: !ruby/object:Gem::Requirement
|
128
162
|
requirements:
|
129
|
-
- - "
|
163
|
+
- - "~>"
|
130
164
|
- !ruby/object:Gem::Version
|
131
165
|
version: '1.0'
|
132
166
|
type: :development
|
133
167
|
prerelease: false
|
134
168
|
version_requirements: !ruby/object:Gem::Requirement
|
135
169
|
requirements:
|
136
|
-
- - "
|
170
|
+
- - "~>"
|
137
171
|
- !ruby/object:Gem::Version
|
138
172
|
version: '1.0'
|
139
173
|
- !ruby/object:Gem::Dependency
|
@@ -142,14 +176,14 @@ dependencies:
|
|
142
176
|
requirements:
|
143
177
|
- - "~>"
|
144
178
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
179
|
+
version: '0.18'
|
146
180
|
type: :development
|
147
181
|
prerelease: false
|
148
182
|
version_requirements: !ruby/object:Gem::Requirement
|
149
183
|
requirements:
|
150
184
|
- - "~>"
|
151
185
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
186
|
+
version: '0.18'
|
153
187
|
- !ruby/object:Gem::Dependency
|
154
188
|
name: simplecov-console
|
155
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,7 +198,35 @@ dependencies:
|
|
164
198
|
- - '='
|
165
199
|
- !ruby/object:Gem::Version
|
166
200
|
version: 0.5.0
|
167
|
-
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: vcr
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: 6.0.0
|
208
|
+
type: :development
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 6.0.0
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: webmock
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - "~>"
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 3.10.0
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - "~>"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: 3.10.0
|
229
|
+
description: Knows how to calculate the SkunkScore for a set of Ruby modules
|
168
230
|
email:
|
169
231
|
- ernesto+github@ombulabs.com
|
170
232
|
executables:
|
@@ -172,34 +234,44 @@ executables:
|
|
172
234
|
extensions: []
|
173
235
|
extra_rdoc_files: []
|
174
236
|
files:
|
237
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
238
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
239
|
+
- ".github/workflows/main.yml"
|
240
|
+
- ".github/workflows/skunk.yml"
|
175
241
|
- ".gitignore"
|
176
242
|
- ".reek.yml"
|
177
243
|
- ".rubocop.yml"
|
178
244
|
- ".rubocop_todo.yml"
|
179
|
-
- ".travis.yml"
|
180
245
|
- CHANGELOG.md
|
246
|
+
- CODEOWNERS
|
181
247
|
- CODE_OF_CONDUCT.md
|
182
248
|
- Gemfile
|
183
|
-
- Gemfile
|
249
|
+
- Gemfile-Ruby-2-4
|
184
250
|
- LICENSE.txt
|
185
251
|
- README.md
|
186
252
|
- Rakefile
|
187
|
-
- bin/console
|
188
|
-
- bin/setup
|
189
253
|
- exe/skunk
|
254
|
+
- fastruby-logo.png
|
190
255
|
- lib/skunk.rb
|
191
256
|
- lib/skunk/cli/application.rb
|
192
257
|
- lib/skunk/cli/command_factory.rb
|
193
258
|
- lib/skunk/cli/commands/base.rb
|
194
259
|
- lib/skunk/cli/commands/compare.rb
|
260
|
+
- lib/skunk/cli/commands/compare_score.rb
|
195
261
|
- lib/skunk/cli/commands/default.rb
|
196
262
|
- lib/skunk/cli/commands/help.rb
|
263
|
+
- lib/skunk/cli/commands/output.rb
|
264
|
+
- lib/skunk/cli/commands/shareable.rb
|
197
265
|
- lib/skunk/cli/commands/status_reporter.rb
|
266
|
+
- lib/skunk/cli/commands/status_sharer.rb
|
267
|
+
- lib/skunk/cli/commands/version.rb
|
198
268
|
- lib/skunk/cli/options.rb
|
199
269
|
- lib/skunk/cli/options/argv.rb
|
200
270
|
- lib/skunk/rubycritic/analysed_module.rb
|
201
271
|
- lib/skunk/rubycritic/analysed_modules_collection.rb
|
202
272
|
- lib/skunk/version.rb
|
273
|
+
- logo.png
|
274
|
+
- samples/engines/spec/nested_sample_spec.rb
|
203
275
|
- samples/rubycritic/analysed_module.rb
|
204
276
|
- skunk.gemspec
|
205
277
|
homepage: https://github.com/fastruby/skunk
|
@@ -210,7 +282,7 @@ metadata:
|
|
210
282
|
homepage_uri: https://github.com/fastruby/skunk
|
211
283
|
source_code_uri: https://github.com/fastruby/skunk
|
212
284
|
changelog_uri: https://github.com/fastruby/skunk/changelog
|
213
|
-
post_install_message:
|
285
|
+
post_install_message:
|
214
286
|
rdoc_options: []
|
215
287
|
require_paths:
|
216
288
|
- lib
|
@@ -218,15 +290,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
218
290
|
requirements:
|
219
291
|
- - ">="
|
220
292
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
293
|
+
version: 2.4.0
|
294
|
+
- - "<"
|
295
|
+
- !ruby/object:Gem::Version
|
296
|
+
version: 3.1.0
|
222
297
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
298
|
requirements:
|
224
299
|
- - ">="
|
225
300
|
- !ruby/object:Gem::Version
|
226
301
|
version: '0'
|
227
302
|
requirements: []
|
228
|
-
rubygems_version: 3.0.
|
229
|
-
signing_key:
|
303
|
+
rubygems_version: 3.0.9
|
304
|
+
signing_key:
|
230
305
|
specification_version: 4
|
231
306
|
summary: A library to assess code quality vs. code coverage
|
232
307
|
test_files: []
|