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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1005c04aae87d441e5a4206c4c4e7771d0e0a354
4
- data.tar.gz: ce749018195f340fb7e80b77bbb1b4ea807bc10e
3
+ metadata.gz: ff756ce9314546a2c59c80a36050ce9c66b4e6fc
4
+ data.tar.gz: bd98a9ea95e2e15e5e9ada6f7f88d3f33e7bb7ea
5
5
  SHA512:
6
- metadata.gz: a2807707cd4a03836f3deadd69ba4fcb59bc48ef4bf092744a71385a8a0fe8f2958754a807002463927e737d7a06c93d361237408f4102f27d6dfcc42eb90a90
7
- data.tar.gz: 79636bb7472afcc74b819a78ed829b1f7b010429c297b80c77f84bc2a70d9e14a8ce4399d998e1eaaf25a1ee4a69afa1091bd2d0bbf723109202257864d433db
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
@@ -18,7 +18,7 @@ require 'rake/tasklib'
18
18
  require 'rbconfig'
19
19
  require_relative '../runner'
20
20
  require_relative '../quality_checker'
21
- require_relative 'config'
21
+ require_relative '../config'
22
22
 
23
23
  module Quality
24
24
  #
@@ -96,6 +96,6 @@ module Quality
96
96
  end
97
97
 
98
98
  def_delegators :@config, :ruby_files, :ruby_files_glob, :source_files_glob,
99
- :punchlist_regexp
99
+ :punchlist_regexp, :source_files_exclude_glob, :exclude_files
100
100
  end
101
101
  end
@@ -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: "--glob '#{source_files_glob}'") do |line|
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: true) do |line|
10
+ gives_error_code_on_no_relevant_code:
11
+ true) do |line|
11
12
  if line =~ /Security Warnings,([0-9]*) \([0-9]*\)$/
12
- $1.to_i
13
+ Regexp.last_match[1].to_i
13
14
  else
14
15
  0
15
16
  end
@@ -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
- "-f '#{ruby_files_glob}'"
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
@@ -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: "--mass 75 --timeout 99999 #{ruby_files}",
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
@@ -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
 
@@ -5,7 +5,7 @@ module Quality
5
5
  private
6
6
 
7
7
  def quality_reek
8
- args = "--single-line #{ruby_files}"
8
+ args = "--single-line #{ruby_files.join(' ')}"
9
9
  ratchet_quality_cmd('reek',
10
10
  args: args,
11
11
  emacs_format: true,
@@ -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: "--format emacs #{ruby_files}") do |line|
14
+ args: rubocop_args) do |line|
11
15
  self.class.count_rubocop_violations(line)
12
16
  end
13
17
  end
@@ -2,5 +2,5 @@
2
2
  # reek, flog, flay and rubocop and makes sure your numbers don't get
3
3
  # any worse over time.
4
4
  module Quality
5
- VERSION = '14.0.0'
5
+ VERSION = '14.1.0'
6
6
  end
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.0.0
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-02 00:00:00.000000000 Z
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: '0'
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: '0'
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
@@ -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