quality 14.0.0 → 14.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|