quality 27.3.1 → 27.4.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 +7 -0
- data/lib/quality/command_output_processor.rb +9 -7
- data/lib/quality/config.rb +5 -1
- data/lib/quality/quality_checker.rb +40 -15
- data/lib/quality/runner.rb +9 -7
- data/lib/quality/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e7d5c912404289b0414f2f8efa3f28374e1c698
|
4
|
+
data.tar.gz: e26e1eed73d85f7895ba3110e60474053dcd02df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44634291db8c0f7b5803a204aef4839c1c495da354f01b3acc9118861d3a5de2f4f02995330e794fe078a7c1d2c9ded10e791e76bed747d88d8aaf7079584558
|
7
|
+
data.tar.gz: d76c732f3b3eddd05abccb43c28b726ed9d084fbbd2e6415adc7fa9c8bf8bce69b30248901c7b6466854ca695fd360b05bf7a505171609a77321af2f6b19fda5
|
data/README.md
CHANGED
@@ -102,6 +102,13 @@ Quality::Rake::Task.new do |t|
|
|
102
102
|
# Defaults to :ratchet.
|
103
103
|
t.ratchet_name = 'ratchet'
|
104
104
|
|
105
|
+
#
|
106
|
+
# Set minimum values to ratchet to.
|
107
|
+
#
|
108
|
+
# Defaults to { bigfiles: 300 }
|
109
|
+
#
|
110
|
+
t.minimum_threshold = { bigfiles: 300 }
|
111
|
+
|
105
112
|
# Array of strings describing tools to be skipped--e.g., ["cane"]
|
106
113
|
#
|
107
114
|
# Defaults to []
|
@@ -28,20 +28,22 @@ module Quality
|
|
28
28
|
out
|
29
29
|
end
|
30
30
|
|
31
|
+
def processed_output
|
32
|
+
if emacs_format
|
33
|
+
preprocess_line_for_emacs
|
34
|
+
else
|
35
|
+
@current_line
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
31
39
|
def process_line(&block)
|
32
|
-
output =
|
33
|
-
if emacs_format
|
34
|
-
preprocess_line_for_emacs
|
35
|
-
else
|
36
|
-
@current_line
|
37
|
-
end
|
38
40
|
@found_output = true
|
39
41
|
@violations += if block
|
40
42
|
yield @current_line
|
41
43
|
else
|
42
44
|
1
|
43
45
|
end
|
44
|
-
|
46
|
+
processed_output
|
45
47
|
end
|
46
48
|
|
47
49
|
def preprocess_line_for_emacs
|
data/lib/quality/config.rb
CHANGED
@@ -12,7 +12,7 @@ module Quality
|
|
12
12
|
:output_dir, :punchlist_regexp,
|
13
13
|
:scalastyle_config, :scalastyle_exclude
|
14
14
|
|
15
|
-
attr_writer :source_files_exclude_glob
|
15
|
+
attr_writer :source_files_exclude_glob, :minimum_threshold
|
16
16
|
|
17
17
|
extend Forwardable
|
18
18
|
|
@@ -48,6 +48,10 @@ module Quality
|
|
48
48
|
@dir.glob("#{output_dir}/*_high_water_mark")
|
49
49
|
end
|
50
50
|
|
51
|
+
def minimum_threshold
|
52
|
+
@minimum_threshold ||= { bigfiles: 300 }
|
53
|
+
end
|
54
|
+
|
51
55
|
def initialize(quality_name: 'quality',
|
52
56
|
ratchet_name: 'ratchet',
|
53
57
|
source_file_globber: Quality::LinguistSourceFileGlobber.new,
|
@@ -9,15 +9,19 @@ module Quality
|
|
9
9
|
# if possible, or outputs data if the number of violations increased.
|
10
10
|
class QualityChecker
|
11
11
|
def initialize(cmd, command_options, output_dir, verbose,
|
12
|
+
minimum_threshold,
|
13
|
+
logger: STDOUT,
|
12
14
|
count_file: File,
|
13
15
|
count_io: IO,
|
14
16
|
command_output_processor_class:
|
15
17
|
Quality::CommandOutputProcessor,
|
16
18
|
count_dir: Dir,
|
17
19
|
process_class: Process)
|
20
|
+
@minimum_threshold = minimum_threshold
|
18
21
|
@count_file = count_file
|
19
22
|
@count_io = count_io
|
20
23
|
@command_output_processor_class = command_output_processor_class
|
24
|
+
@logger = logger
|
21
25
|
@count_dir = count_dir
|
22
26
|
@cmd = cmd
|
23
27
|
@command_options = command_options
|
@@ -60,30 +64,51 @@ module Quality
|
|
60
64
|
"Exit status is #{exit_status}") if exit_status.nonzero?
|
61
65
|
end
|
62
66
|
|
67
|
+
MAX_VIOLATIONS = 9_999_999_999
|
68
|
+
|
63
69
|
def existing_violations
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
70
|
+
@existing_violations ||=
|
71
|
+
begin
|
72
|
+
if @count_file.exist?(@filename)
|
73
|
+
@count_io.read(@filename).to_i
|
74
|
+
else
|
75
|
+
MAX_VIOLATIONS
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def error_too_many_violations!
|
81
|
+
raise("Output from #{@cmd}\n\n#{@command_output}\n\n" \
|
82
|
+
"Reduce total number of #{@cmd} violations " \
|
83
|
+
"to #{existing_violations} or below!")
|
84
|
+
end
|
85
|
+
|
86
|
+
def violations_to_write
|
87
|
+
@violations_to_write ||= [@violations, @minimum_threshold].max
|
88
|
+
end
|
89
|
+
|
90
|
+
def report_ratchet
|
91
|
+
if @violations < existing_violations &&
|
92
|
+
existing_violations != MAX_VIOLATIONS
|
93
|
+
@logger.puts 'Ratcheting quality up...'
|
68
94
|
end
|
69
95
|
end
|
70
96
|
|
71
97
|
def ratchet_violations
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
elsif @violations < existing
|
79
|
-
puts 'Ratcheting quality up...'
|
80
|
-
write_violations(@violations)
|
98
|
+
report_violations(existing_violations)
|
99
|
+
if @violations > [existing_violations, @minimum_threshold].max
|
100
|
+
error_too_many_violations!
|
101
|
+
elsif violations_to_write != existing_violations
|
102
|
+
report_ratchet
|
103
|
+
write_violations(violations_to_write)
|
81
104
|
end
|
82
105
|
end
|
83
106
|
|
84
107
|
def report_violations(existing)
|
85
|
-
|
86
|
-
|
108
|
+
if existing != MAX_VIOLATIONS
|
109
|
+
@logger.puts "Existing violations: #{existing}"
|
110
|
+
end
|
111
|
+
@logger.puts "Found #{@violations} #{@cmd} violations"
|
87
112
|
end
|
88
113
|
|
89
114
|
def full_cmd
|
data/lib/quality/runner.rb
CHANGED
@@ -22,13 +22,10 @@ module Quality
|
|
22
22
|
|
23
23
|
extend ::Forwardable
|
24
24
|
|
25
|
-
def initialize(config,
|
26
|
-
gem_spec: Gem::Specification,
|
25
|
+
def initialize(config, gem_spec: Gem::Specification,
|
27
26
|
quality_checker_class: Quality::QualityChecker,
|
28
|
-
count_io: IO,
|
29
|
-
|
30
|
-
globber: Dir,
|
31
|
-
which: Which.new)
|
27
|
+
count_io: IO, count_file: File,
|
28
|
+
globber: Dir, which: Which.new)
|
32
29
|
@config = config
|
33
30
|
@gem_spec = gem_spec
|
34
31
|
@quality_checker_class = quality_checker_class
|
@@ -96,13 +93,18 @@ module Quality
|
|
96
93
|
end.compact
|
97
94
|
end
|
98
95
|
|
96
|
+
def minimum_threshold_for(cmd)
|
97
|
+
@config.minimum_threshold[cmd.to_sym] || 0
|
98
|
+
end
|
99
|
+
|
99
100
|
def ratchet_quality_cmd(cmd,
|
100
101
|
command_options,
|
101
102
|
&count_violations_on_line)
|
102
103
|
quality_checker = @quality_checker_class.new(cmd,
|
103
104
|
command_options,
|
104
105
|
@config.output_dir,
|
105
|
-
@config.verbose
|
106
|
+
@config.verbose,
|
107
|
+
minimum_threshold_for(cmd))
|
106
108
|
quality_checker.execute(&count_violations_on_line)
|
107
109
|
end
|
108
110
|
|
data/lib/quality/version.rb
CHANGED
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: 27.
|
4
|
+
version: 27.4.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: 2017-
|
11
|
+
date: 2017-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -376,7 +376,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
376
376
|
version: '0'
|
377
377
|
requirements: []
|
378
378
|
rubyforge_project:
|
379
|
-
rubygems_version: 2.
|
379
|
+
rubygems_version: 2.6.12
|
380
380
|
signing_key:
|
381
381
|
specification_version: 4
|
382
382
|
summary: Code quality tools for Ruby
|