quality 17.2.0 → 18.0.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/lib/quality/config.rb +25 -10
- data/lib/quality/rake/task.rb +5 -2
- data/lib/quality/runner.rb +12 -3
- data/lib/quality/tools/eslint.rb +24 -0
- data/lib/quality/tools/pep8.rb +19 -0
- data/lib/quality/version.rb +1 -1
- data/lib/quality/which.rb +14 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13356954d2864a210c04f07acebd158ca6898072
|
4
|
+
data.tar.gz: 6e08804b23726babd514f31ee29b9db4bdcd4327
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f66de80a8ded9313495c449909c2839277a1931547c75dc14db3e51629e193e036719c7fef0070a453f3ffedf7b14cb27d62b5ebb40fd70adfa352591c806941
|
7
|
+
data.tar.gz: 46956de8a0f4880b344d905d23c2b9e05f50ebc31e8e12a0cb060a116631b3ac5b0749e6056b6bdf617b833112acd4ee1942ade161c94a47ff00710ea2917147
|
data/lib/quality/config.rb
CHANGED
@@ -14,34 +14,49 @@ module Quality
|
|
14
14
|
|
15
15
|
def_delegators(:source_file_globber,
|
16
16
|
:ruby_dirs_arr=, :ruby_dirs_arr,
|
17
|
-
:source_dirs_arr=, :source_dirs_arr,
|
18
|
-
:extra_source_files_arr=, :extra_source_files_arr,
|
19
|
-
:exclude_files_arr=, :exclude_files_arr,
|
20
17
|
:extra_ruby_files_arr=, :extra_ruby_files_arr,
|
21
18
|
:ruby_file_extensions_arr=, :ruby_file_extensions_arr,
|
22
19
|
:ruby_file_extensions_glob=, :ruby_file_extensions_glob,
|
20
|
+
:ruby_files_glob, :ruby_files_arr)
|
21
|
+
|
22
|
+
def_delegators(:source_file_globber,
|
23
|
+
:js_dirs_arr=, :js_dirs_arr,
|
24
|
+
:extra_js_files_arr=, :extra_js_files_arr,
|
25
|
+
:js_file_extensions_arr=, :js_file_extensions_arr,
|
26
|
+
:js_file_extensions_glob=, :js_file_extensions_glob,
|
27
|
+
:js_files_glob, :js_files_arr)
|
28
|
+
|
29
|
+
def_delegators(:source_file_globber,
|
30
|
+
:python_files_glob, :python_files_arr)
|
31
|
+
|
32
|
+
def_delegators(:source_file_globber,
|
33
|
+
:source_dirs_arr=, :source_dirs_arr,
|
34
|
+
:extra_source_files_arr=, :extra_source_files_arr,
|
35
|
+
:exclude_files_arr=, :exclude_files_arr,
|
23
36
|
:source_file_extensions_arr=, :source_file_extensions_arr,
|
24
37
|
:source_file_extensions_glob=, :source_file_extensions_glob,
|
25
38
|
:source_and_doc_files_glob,
|
26
39
|
:source_files_glob,
|
27
40
|
:source_files_exclude_glob,
|
28
|
-
:source_files_exclude_glob
|
29
|
-
:ruby_files_glob,
|
30
|
-
:ruby_files_arr)
|
41
|
+
:source_files_exclude_glob=)
|
31
42
|
|
32
|
-
alias_method(:extra_files, :extra_source_files_arr)
|
33
|
-
alias_method(:extra_files=, :extra_source_files_arr=)
|
34
43
|
alias_method(:extra_ruby_files, :extra_ruby_files_arr)
|
35
44
|
alias_method(:extra_ruby_files=, :extra_ruby_files_arr=)
|
36
45
|
alias_method(:ruby_files, :ruby_files_arr)
|
46
|
+
alias_method(:python_files, :python_files_arr)
|
37
47
|
alias_method(:ruby_dirs, :ruby_dirs_arr)
|
38
48
|
alias_method(:ruby_dirs=, :ruby_dirs_arr=)
|
49
|
+
alias_method(:ruby_file_extensions, :ruby_file_extensions_glob)
|
50
|
+
alias_method(:ruby_file_extensions=, :ruby_file_extensions_glob=)
|
51
|
+
|
52
|
+
alias_method(:extra_files, :extra_source_files_arr)
|
53
|
+
alias_method(:extra_files=, :extra_source_files_arr=)
|
54
|
+
alias_method(:extra_source_files, :extra_source_files_arr)
|
55
|
+
alias_method(:extra_source_files=, :extra_source_files_arr=)
|
39
56
|
alias_method(:source_dirs, :source_dirs_arr)
|
40
57
|
alias_method(:source_dirs=, :source_dirs_arr=)
|
41
58
|
alias_method(:exclude_files, :exclude_files_arr)
|
42
59
|
alias_method(:exclude_files=, :exclude_files_arr=)
|
43
|
-
alias_method(:ruby_file_extensions, :ruby_file_extensions_glob)
|
44
|
-
alias_method(:ruby_file_extensions=, :ruby_file_extensions_glob=)
|
45
60
|
|
46
61
|
# This was named and documented poorly early on
|
47
62
|
alias_method(:source_file_extensions, :source_file_extensions_glob)
|
data/lib/quality/rake/task.rb
CHANGED
@@ -16,6 +16,7 @@ end
|
|
16
16
|
require 'rake'
|
17
17
|
require 'rake/tasklib'
|
18
18
|
require 'rbconfig'
|
19
|
+
require_relative '../which'
|
19
20
|
require_relative '../runner'
|
20
21
|
require_relative '../quality_checker'
|
21
22
|
require_relative '../config'
|
@@ -47,7 +48,8 @@ module Quality
|
|
47
48
|
globber: Dir,
|
48
49
|
gem_spec: Gem::Specification,
|
49
50
|
quality_checker_class:
|
50
|
-
Quality::QualityChecker
|
51
|
+
Quality::QualityChecker,
|
52
|
+
which: Which.new)
|
51
53
|
@dsl = dsl
|
52
54
|
@cmd_runner = cmd_runner
|
53
55
|
@globber = globber
|
@@ -59,7 +61,8 @@ module Quality
|
|
59
61
|
quality_checker_class,
|
60
62
|
count_io: count_io,
|
61
63
|
count_file: count_file,
|
62
|
-
globber: globber
|
64
|
+
globber: globber,
|
65
|
+
which: which)
|
63
66
|
define
|
64
67
|
end
|
65
68
|
|
data/lib/quality/runner.rb
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
require 'active_support/inflector'
|
2
2
|
require 'forwardable'
|
3
|
+
require_relative 'which'
|
3
4
|
require_relative 'tools/cane'
|
4
5
|
require_relative 'tools/flay'
|
5
6
|
require_relative 'tools/flog'
|
6
7
|
require_relative 'tools/reek'
|
7
8
|
require_relative 'tools/rubocop'
|
8
9
|
require_relative 'tools/bigfiles'
|
10
|
+
require_relative 'tools/pep8'
|
9
11
|
require_relative 'tools/punchlist'
|
10
12
|
require_relative 'tools/brakeman'
|
11
13
|
require_relative 'tools/rails_best_practices'
|
14
|
+
require_relative 'tools/eslint'
|
12
15
|
|
13
16
|
module Quality
|
14
17
|
# Knows how to run different quality tools based on a configuration
|
@@ -20,9 +23,11 @@ module Quality
|
|
20
23
|
include Tools::Reek
|
21
24
|
include Tools::Rubocop
|
22
25
|
include Tools::Bigfiles
|
26
|
+
include Tools::Pep8
|
23
27
|
include Tools::Punchlist
|
24
28
|
include Tools::Brakeman
|
25
29
|
include Tools::RailsBestPractices
|
30
|
+
include Tools::Eslint
|
26
31
|
|
27
32
|
extend ::Forwardable
|
28
33
|
|
@@ -31,13 +36,15 @@ module Quality
|
|
31
36
|
quality_checker_class: Quality::QualityChecker,
|
32
37
|
count_io: IO,
|
33
38
|
count_file: File,
|
34
|
-
globber: Dir
|
39
|
+
globber: Dir,
|
40
|
+
which: Which.new)
|
35
41
|
@config = config
|
36
42
|
@gem_spec = gem_spec
|
37
43
|
@quality_checker_class = quality_checker_class
|
38
44
|
@count_io = count_io
|
39
45
|
@count_file = count_file
|
40
46
|
@globber = globber
|
47
|
+
@which = which
|
41
48
|
end
|
42
49
|
|
43
50
|
def run_quality
|
@@ -45,8 +52,9 @@ module Quality
|
|
45
52
|
end
|
46
53
|
|
47
54
|
def run_quality_with_tool(tool)
|
48
|
-
installed = @gem_spec.find_all_by_name(tool).any?
|
49
55
|
suppressed = @config.skip_tools.include? tool
|
56
|
+
installed = @gem_spec.find_all_by_name(tool).any? ||
|
57
|
+
!@which.which(tool).nil?
|
50
58
|
|
51
59
|
if installed && !suppressed
|
52
60
|
method("quality_#{tool}".to_sym).call
|
@@ -97,8 +105,9 @@ module Quality
|
|
97
105
|
end
|
98
106
|
|
99
107
|
def_delegators :@config, :ruby_files, :ruby_files_glob,
|
108
|
+
:python_files, :python_files_glob,
|
100
109
|
:source_files_glob, :punchlist_regexp,
|
101
110
|
:source_files_exclude_glob, :exclude_files,
|
102
|
-
:source_and_doc_files_glob
|
111
|
+
:source_and_doc_files_glob, :js_files_arr
|
103
112
|
end
|
104
113
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Quality
|
2
|
+
module Tools
|
3
|
+
# Adds 'bigfiles' tool support to quality gem
|
4
|
+
module Eslint
|
5
|
+
private
|
6
|
+
|
7
|
+
def eslint_args
|
8
|
+
'-f unix ' + js_files_arr.join(' ')
|
9
|
+
end
|
10
|
+
|
11
|
+
def quality_eslint
|
12
|
+
ratchet_quality_cmd('eslint',
|
13
|
+
args: eslint_args,
|
14
|
+
gives_error_code_on_violations: true) do |line|
|
15
|
+
if line =~ /^.*:\d+:\d+: /
|
16
|
+
1
|
17
|
+
else
|
18
|
+
0
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Quality
|
2
|
+
module Tools
|
3
|
+
# Adds 'pep8' tool support to quality gem
|
4
|
+
module Pep8
|
5
|
+
private
|
6
|
+
|
7
|
+
def pep8_args
|
8
|
+
python_files.join(' ')
|
9
|
+
end
|
10
|
+
|
11
|
+
def quality_pep8
|
12
|
+
ratchet_quality_cmd('pep8',
|
13
|
+
args: pep8_args) do |line|
|
14
|
+
line.split(':')[0].to_i
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/quality/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
class Which
|
2
|
+
# http://stackoverflow.com/questions/2108727/
|
3
|
+
# which-in-ruby-checking-if-program-exists-in-path-from-ruby
|
4
|
+
def which(cmd)
|
5
|
+
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
6
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
7
|
+
exts.each { |ext|
|
8
|
+
exe = File.join(path, "#{cmd}#{ext}")
|
9
|
+
return exe if File.executable?(exe) && !File.directory?(exe)
|
10
|
+
}
|
11
|
+
end
|
12
|
+
return nil
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quality
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 18.0.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-
|
11
|
+
date: 2015-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -309,13 +309,16 @@ files:
|
|
309
309
|
- lib/quality/tools/bigfiles.rb
|
310
310
|
- lib/quality/tools/brakeman.rb
|
311
311
|
- lib/quality/tools/cane.rb
|
312
|
+
- lib/quality/tools/eslint.rb
|
312
313
|
- lib/quality/tools/flay.rb
|
313
314
|
- lib/quality/tools/flog.rb
|
315
|
+
- lib/quality/tools/pep8.rb
|
314
316
|
- lib/quality/tools/punchlist.rb
|
315
317
|
- lib/quality/tools/rails_best_practices.rb
|
316
318
|
- lib/quality/tools/reek.rb
|
317
319
|
- lib/quality/tools/rubocop.rb
|
318
320
|
- lib/quality/version.rb
|
321
|
+
- lib/quality/which.rb
|
319
322
|
- quality.gemspec
|
320
323
|
homepage: http://github.com/apiology/quality
|
321
324
|
licenses:
|