quality 27.3.1 → 27.4.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 +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
|