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 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