quality 14.0.0 → 14.1.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/README.md +3 -0
- data/lib/quality/config.rb +48 -0
- data/lib/quality/rake/task.rb +1 -1
- data/lib/quality/runner.rb +1 -1
- data/lib/quality/tools/bigfiles.rb +9 -1
- data/lib/quality/tools/brakeman.rb +3 -2
- data/lib/quality/tools/cane.rb +13 -1
- data/lib/quality/tools/flay.rb +6 -2
- data/lib/quality/tools/flog.rb +1 -1
- data/lib/quality/tools/punchlist.rb +4 -0
- data/lib/quality/tools/reek.rb +1 -1
- data/lib/quality/tools/rubocop.rb +5 -1
- data/lib/quality/version.rb +1 -1
- data/quality.gemspec +3 -2
- metadata +21 -7
- data/lib/quality/rake/config.rb +0 -76
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff756ce9314546a2c59c80a36050ce9c66b4e6fc
|
4
|
+
data.tar.gz: bd98a9ea95e2e15e5e9ada6f7f88d3f33e7bb7ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbcd9d84b68a47dabffa94adf2f2f1ef9e303d2e0c9b4f7c50d6d95881dac53b11fb8c86d1dd09a397b6fc655d4e560d99470c1f936324f23aeaab76a5a3b8eb
|
7
|
+
data.tar.gz: ac1efb5bb1eca658ee7c6f648a977d2a822b37a13de59ae88d2e39598be1a1490596d495b917e0ceda436d030bd5069bd365d26552fa9a252fe416198cbd8c3b
|
data/README.md
CHANGED
@@ -94,6 +94,9 @@ Quality::Rake::Task.new { |t|
|
|
94
94
|
# extensions--defaults to %w(Rakefile)
|
95
95
|
t.extra_ruby_files = ['Rakefile']
|
96
96
|
|
97
|
+
# Exclude the specified list of files--defaults to []
|
98
|
+
t.exclude_files = ['lib/whatever/imported_file.rb', 'lib/vendor/someone_else_fault.rb']
|
99
|
+
|
97
100
|
# Extensions for Ruby language files--defaults to 'rb,rake'
|
98
101
|
t.ruby_file_extensions = 'rb,rake'
|
99
102
|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# XXX: I should figure out how to use tagged releases in github. Example:
|
2
|
+
# https://github.com/xsc/lein-ancient/issues/29
|
3
|
+
# https://github.com/xsc/lein-ancient/releases
|
4
|
+
|
5
|
+
require 'source_finder/source_file_globber'
|
6
|
+
|
7
|
+
module Quality
|
8
|
+
# Configuration for running quality tool
|
9
|
+
class Config
|
10
|
+
attr_accessor :skip_tools, :verbose, :quality_name, :ratchet_name,
|
11
|
+
:output_dir, :punchlist_regexp
|
12
|
+
|
13
|
+
extend Forwardable
|
14
|
+
|
15
|
+
def_delegators(:source_file_globber,
|
16
|
+
:ruby_dirs=, :ruby_dirs,
|
17
|
+
:source_dirs=, :source_dirs,
|
18
|
+
:extra_files=, :extra_files,
|
19
|
+
:exclude_files=, :exclude_files,
|
20
|
+
:extra_ruby_files=, :extra_ruby_files,
|
21
|
+
:ruby_file_extensions=, :ruby_file_extensions,
|
22
|
+
:source_file_extensions=, :source_file_extensions,
|
23
|
+
:source_files_glob,
|
24
|
+
:source_files_exclude_glob,
|
25
|
+
:ruby_files_glob,
|
26
|
+
:ruby_files)
|
27
|
+
|
28
|
+
def source_file_globber
|
29
|
+
@source_file_globber ||=
|
30
|
+
SourceFinder::SourceFileGlobber.new(globber: @globber)
|
31
|
+
end
|
32
|
+
|
33
|
+
def all_output_files
|
34
|
+
@globber.glob("#{output_dir}/*_high_water_mark")
|
35
|
+
end
|
36
|
+
|
37
|
+
def initialize(quality_name: 'quality',
|
38
|
+
ratchet_name: 'ratchet',
|
39
|
+
globber: fail)
|
40
|
+
@quality_name = quality_name
|
41
|
+
@ratchet_name = ratchet_name
|
42
|
+
@skip_tools = []
|
43
|
+
@output_dir = 'metrics'
|
44
|
+
@verbose = false
|
45
|
+
@globber = globber
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/quality/rake/task.rb
CHANGED
data/lib/quality/runner.rb
CHANGED
@@ -4,9 +4,17 @@ module Quality
|
|
4
4
|
module BigFiles
|
5
5
|
private
|
6
6
|
|
7
|
+
def bigfiles_args
|
8
|
+
args = ['--glob', "'#{source_files_glob}'"]
|
9
|
+
if exclude_files.size > 0
|
10
|
+
args << ['--exclude-glob', "'#{source_files_exclude_glob}'"]
|
11
|
+
end
|
12
|
+
args.join(' ')
|
13
|
+
end
|
14
|
+
|
7
15
|
def quality_bigfiles
|
8
16
|
ratchet_quality_cmd('bigfiles',
|
9
|
-
args:
|
17
|
+
args: bigfiles_args) do |line|
|
10
18
|
line.split(':')[0].to_i
|
11
19
|
end
|
12
20
|
end
|
@@ -7,9 +7,10 @@ module Quality
|
|
7
7
|
def quality_brakeman
|
8
8
|
ratchet_quality_cmd('brakeman',
|
9
9
|
args: '-q --summary -f csv 2>/dev/null',
|
10
|
-
gives_error_code_on_no_relevant_code:
|
10
|
+
gives_error_code_on_no_relevant_code:
|
11
|
+
true) do |line|
|
11
12
|
if line =~ /Security Warnings,([0-9]*) \([0-9]*\)$/
|
12
|
-
|
13
|
+
Regexp.last_match[1].to_i
|
13
14
|
else
|
14
15
|
0
|
15
16
|
end
|
data/lib/quality/tools/cane.rb
CHANGED
@@ -4,8 +4,20 @@ module Quality
|
|
4
4
|
module Cane
|
5
5
|
private
|
6
6
|
|
7
|
+
def cane_exclude_args
|
8
|
+
[
|
9
|
+
"--abc-exclude '#{source_files_exclude_glob}'",
|
10
|
+
"--style-exclude '#{source_files_exclude_glob}'",
|
11
|
+
"--doc-exclude '#{source_files_exclude_glob}'",
|
12
|
+
]
|
13
|
+
end
|
14
|
+
|
7
15
|
def cane_args
|
8
|
-
|
16
|
+
args = [
|
17
|
+
"-f '#{ruby_files_glob}'",
|
18
|
+
]
|
19
|
+
args += cane_exclude_args if exclude_files.size > 0
|
20
|
+
args.join(' ')
|
9
21
|
end
|
10
22
|
|
11
23
|
def quality_cane
|
data/lib/quality/tools/flay.rb
CHANGED
@@ -4,11 +4,15 @@ module Quality
|
|
4
4
|
module Flay
|
5
5
|
private
|
6
6
|
|
7
|
+
def flay_args
|
8
|
+
"--mass 75 --timeout 99999 #{ruby_files.join(' ')}"
|
9
|
+
end
|
10
|
+
|
7
11
|
def quality_flay
|
8
12
|
ratchet_quality_cmd('flay',
|
9
|
-
args:
|
13
|
+
args: flay_args,
|
10
14
|
emacs_format: true) do |line|
|
11
|
-
if line =~ /^[0-9]*\).* \(mass = ([0-9]*)\)$/
|
15
|
+
if line =~ /^[0-9]*\).* \(mass.* = ([0-9]*)\)$/
|
12
16
|
Regexp.last_match[1].to_i
|
13
17
|
else
|
14
18
|
0
|
data/lib/quality/tools/flog.rb
CHANGED
@@ -5,7 +5,7 @@ module Quality
|
|
5
5
|
private
|
6
6
|
|
7
7
|
def quality_flog
|
8
|
-
args = "--all --continue --methods-only #{ruby_files}"
|
8
|
+
args = "--all --continue --methods-only #{ruby_files.join(' ')}"
|
9
9
|
ratchet_quality_cmd('flog', args: args, emacs_format: true) do |line|
|
10
10
|
self.class.count_violations_in_flog_output(line)
|
11
11
|
end
|
@@ -7,9 +7,13 @@ module Quality
|
|
7
7
|
def punchlist_args
|
8
8
|
glob = "--glob '#{source_files_glob}'"
|
9
9
|
regexp = " --regexp '#{punchlist_regexp}'" if punchlist_regexp
|
10
|
+
if exclude_files.size > 0
|
11
|
+
exclude = " --exclude-glob '#{source_files_exclude_glob}'"
|
12
|
+
end
|
10
13
|
|
11
14
|
args = glob
|
12
15
|
args += regexp if regexp
|
16
|
+
args += exclude if exclude
|
13
17
|
args
|
14
18
|
end
|
15
19
|
|
data/lib/quality/tools/reek.rb
CHANGED
@@ -4,10 +4,14 @@ module Quality
|
|
4
4
|
module Rubocop
|
5
5
|
private
|
6
6
|
|
7
|
+
def rubocop_args
|
8
|
+
"--format emacs #{ruby_files.join(' ')}"
|
9
|
+
end
|
10
|
+
|
7
11
|
def quality_rubocop
|
8
12
|
ratchet_quality_cmd('rubocop',
|
9
13
|
gives_error_code_on_violations: true,
|
10
|
-
args:
|
14
|
+
args: rubocop_args) do |line|
|
11
15
|
self.class.count_rubocop_violations(line)
|
12
16
|
end
|
13
17
|
end
|
data/lib/quality/version.rb
CHANGED
data/quality.gemspec
CHANGED
@@ -30,14 +30,15 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.rubygems_version = '1.3.6'
|
31
31
|
s.summary = 'Code quality tools for Ruby'
|
32
32
|
|
33
|
+
s.add_runtime_dependency('source_finder')
|
33
34
|
s.add_runtime_dependency('cane', ['>= 2.6'])
|
34
35
|
s.add_runtime_dependency('reek', ['>= 1.3.4'])
|
35
36
|
s.add_runtime_dependency('flog', ['>= 4.1.1'])
|
36
37
|
# flay 2.6.0 contained a command-line-parsing issue
|
37
38
|
s.add_runtime_dependency('flay', ['>= 2.4', '!= 2.6.0'])
|
38
39
|
s.add_runtime_dependency('rubocop')
|
39
|
-
s.add_runtime_dependency('bigfiles')
|
40
|
-
s.add_runtime_dependency('punchlist')
|
40
|
+
s.add_runtime_dependency('bigfiles', ['>= 0.1'])
|
41
|
+
s.add_runtime_dependency('punchlist', ['>= 1.1'])
|
41
42
|
s.add_runtime_dependency('brakeman')
|
42
43
|
|
43
44
|
# need above 3.2.2 to support Ruby 2.0 syntax
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quality
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.
|
4
|
+
version: 14.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vince Broz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: source_finder
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: cane
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,28 +106,28 @@ dependencies:
|
|
92
106
|
requirements:
|
93
107
|
- - '>='
|
94
108
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0'
|
109
|
+
version: '0.1'
|
96
110
|
type: :runtime
|
97
111
|
prerelease: false
|
98
112
|
version_requirements: !ruby/object:Gem::Requirement
|
99
113
|
requirements:
|
100
114
|
- - '>='
|
101
115
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0'
|
116
|
+
version: '0.1'
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
118
|
name: punchlist
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
121
|
- - '>='
|
108
122
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
123
|
+
version: '1.1'
|
110
124
|
type: :runtime
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
113
127
|
requirements:
|
114
128
|
- - '>='
|
115
129
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
130
|
+
version: '1.1'
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
132
|
name: brakeman
|
119
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -245,9 +259,9 @@ files:
|
|
245
259
|
- README.md
|
246
260
|
- Rakefile
|
247
261
|
- lib/quality/command_output_processor.rb
|
262
|
+
- lib/quality/config.rb
|
248
263
|
- lib/quality/process.rb
|
249
264
|
- lib/quality/quality_checker.rb
|
250
|
-
- lib/quality/rake/config.rb
|
251
265
|
- lib/quality/rake/task.rb
|
252
266
|
- lib/quality/ruby_spawn.rb
|
253
267
|
- lib/quality/runner.rb
|
data/lib/quality/rake/config.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
# XXX: I should figure out how to use tagged releases in github. Example:
|
2
|
-
# https://github.com/xsc/lein-ancient/issues/29
|
3
|
-
# https://github.com/xsc/lein-ancient/releases
|
4
|
-
|
5
|
-
# XXX: This should be moved out of rake directory
|
6
|
-
module Quality
|
7
|
-
# Configuration for running quality tool
|
8
|
-
class Config
|
9
|
-
# See README.md for documentation on these configuration parameters.
|
10
|
-
|
11
|
-
attr_accessor :quality_name, :ratchet_name, :skip_tools, :verbose,
|
12
|
-
:ruby_dirs, :source_dirs, :extra_files, :extra_ruby_files,
|
13
|
-
:ruby_file_extensions, :source_file_extensions,
|
14
|
-
:punchlist_regexp, :output_dir
|
15
|
-
|
16
|
-
def ruby_dirs
|
17
|
-
@ruby_dirs ||= %w(src app lib test spec feature)
|
18
|
-
end
|
19
|
-
|
20
|
-
def source_dirs
|
21
|
-
@source_dirs ||= ruby_dirs.clone
|
22
|
-
end
|
23
|
-
|
24
|
-
def extra_files
|
25
|
-
@extra_files ||= extra_ruby_files.clone.concat(%w(Dockerfile))
|
26
|
-
end
|
27
|
-
|
28
|
-
def extra_ruby_files
|
29
|
-
@extra_ruby_files ||= %w(Rakefile)
|
30
|
-
end
|
31
|
-
|
32
|
-
def source_file_extensions
|
33
|
-
@source_file_extensions ||=
|
34
|
-
"#{ruby_file_extensions},swift,cpp,c,java,py,clj,cljs,scala,js," \
|
35
|
-
'yml,sh,json'
|
36
|
-
end
|
37
|
-
|
38
|
-
def source_files_glob(extra_source_files = extra_files,
|
39
|
-
dirs = source_dirs,
|
40
|
-
extensions = source_file_extensions)
|
41
|
-
"{#{extra_source_files.join(',')}," \
|
42
|
-
"{*,.*}.{#{extensions}}," +
|
43
|
-
File.join("{#{dirs.join(',')}}",
|
44
|
-
'**',
|
45
|
-
"{*,.*}.{#{extensions}}") +
|
46
|
-
'}'
|
47
|
-
end
|
48
|
-
|
49
|
-
def ruby_file_extensions
|
50
|
-
@ruby_file_extensions ||= 'rb,rake,gemspec'
|
51
|
-
end
|
52
|
-
|
53
|
-
def ruby_files_glob
|
54
|
-
source_files_glob(extra_ruby_files, ruby_dirs, ruby_file_extensions)
|
55
|
-
end
|
56
|
-
|
57
|
-
def ruby_files
|
58
|
-
@globber.glob(ruby_files_glob).join(' ')
|
59
|
-
end
|
60
|
-
|
61
|
-
def all_output_files
|
62
|
-
@globber.glob("#{output_dir}/*_high_water_mark")
|
63
|
-
end
|
64
|
-
|
65
|
-
def initialize(quality_name: 'quality',
|
66
|
-
ratchet_name: 'ratchet',
|
67
|
-
globber: fail)
|
68
|
-
@quality_name = quality_name
|
69
|
-
@ratchet_name = ratchet_name
|
70
|
-
@skip_tools = []
|
71
|
-
@output_dir = 'metrics'
|
72
|
-
@verbose = false
|
73
|
-
@globber = globber
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|