reviewer 0.1.5 → 1.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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +3 -0
  3. data/.github/workflows/main.yml +79 -11
  4. data/.github/workflows/release.yml +98 -0
  5. data/.gitignore +1 -1
  6. data/.inch.yml +3 -1
  7. data/.reek.yml +175 -0
  8. data/.reviewer.example.yml +7 -2
  9. data/.reviewer.yml +166 -40
  10. data/.rubocop.yml +34 -2
  11. data/CHANGELOG.md +42 -2
  12. data/Gemfile +39 -1
  13. data/Gemfile.lock +291 -70
  14. data/LICENSE.txt +20 -4
  15. data/README.md +310 -21
  16. data/RELEASING.md +190 -0
  17. data/Rakefile +117 -0
  18. data/dependency_decisions.yml +61 -0
  19. data/exe/fmt +1 -1
  20. data/exe/rvw +1 -1
  21. data/lib/reviewer/arguments/files.rb +47 -20
  22. data/lib/reviewer/arguments/keywords.rb +34 -41
  23. data/lib/reviewer/arguments/tags.rb +11 -11
  24. data/lib/reviewer/arguments.rb +100 -29
  25. data/lib/reviewer/batch/formatter.rb +87 -0
  26. data/lib/reviewer/batch.rb +32 -48
  27. data/lib/reviewer/capabilities.rb +81 -0
  28. data/lib/reviewer/command/string/env.rb +12 -6
  29. data/lib/reviewer/command/string/flags.rb +2 -4
  30. data/lib/reviewer/command/string.rb +47 -12
  31. data/lib/reviewer/command.rb +65 -10
  32. data/lib/reviewer/configuration/loader.rb +70 -0
  33. data/lib/reviewer/configuration.rb +6 -3
  34. data/lib/reviewer/context.rb +15 -0
  35. data/lib/reviewer/doctor/config_check.rb +46 -0
  36. data/lib/reviewer/doctor/environment_check.rb +58 -0
  37. data/lib/reviewer/doctor/formatter.rb +75 -0
  38. data/lib/reviewer/doctor/keyword_check.rb +85 -0
  39. data/lib/reviewer/doctor/opportunity_check.rb +88 -0
  40. data/lib/reviewer/doctor/report.rb +63 -0
  41. data/lib/reviewer/doctor/tool_inventory.rb +41 -0
  42. data/lib/reviewer/doctor.rb +28 -0
  43. data/lib/reviewer/history.rb +10 -17
  44. data/lib/reviewer/output/formatting.rb +40 -0
  45. data/lib/reviewer/output/printer.rb +70 -9
  46. data/lib/reviewer/output.rb +37 -78
  47. data/lib/reviewer/prompt.rb +38 -0
  48. data/lib/reviewer/report/formatter.rb +124 -0
  49. data/lib/reviewer/report.rb +100 -0
  50. data/lib/reviewer/runner/failed_files.rb +66 -0
  51. data/lib/reviewer/runner/formatter.rb +103 -0
  52. data/lib/reviewer/runner/guidance.rb +79 -0
  53. data/lib/reviewer/runner/result.rb +150 -0
  54. data/lib/reviewer/runner/strategies/captured.rb +98 -23
  55. data/lib/reviewer/runner/strategies/passthrough.rb +2 -11
  56. data/lib/reviewer/runner.rb +126 -40
  57. data/lib/reviewer/session/formatter.rb +87 -0
  58. data/lib/reviewer/session.rb +208 -0
  59. data/lib/reviewer/setup/catalog.rb +233 -0
  60. data/lib/reviewer/setup/detector.rb +61 -0
  61. data/lib/reviewer/setup/formatter.rb +94 -0
  62. data/lib/reviewer/setup/gemfile_lock.rb +55 -0
  63. data/lib/reviewer/setup/generator.rb +54 -0
  64. data/lib/reviewer/setup/tool_block.rb +112 -0
  65. data/lib/reviewer/setup.rb +41 -0
  66. data/lib/reviewer/shell/result.rb +14 -15
  67. data/lib/reviewer/shell/timer.rb +40 -35
  68. data/lib/reviewer/shell.rb +41 -12
  69. data/lib/reviewer/tool/conversions.rb +20 -0
  70. data/lib/reviewer/tool/file_resolver.rb +54 -0
  71. data/lib/reviewer/tool/settings.rb +88 -44
  72. data/lib/reviewer/tool/test_file_mapper.rb +73 -0
  73. data/lib/reviewer/tool/timing.rb +78 -0
  74. data/lib/reviewer/tool.rb +88 -69
  75. data/lib/reviewer/tools.rb +47 -33
  76. data/lib/reviewer/version.rb +1 -1
  77. data/lib/reviewer.rb +109 -50
  78. data/reviewer.gemspec +16 -19
  79. metadata +101 -142
  80. data/lib/reviewer/conversions.rb +0 -16
  81. data/lib/reviewer/guidance.rb +0 -77
  82. data/lib/reviewer/keywords/git/staged.rb +0 -64
  83. data/lib/reviewer/keywords/git.rb +0 -14
  84. data/lib/reviewer/keywords.rb +0 -9
  85. data/lib/reviewer/loader.rb +0 -59
  86. data/lib/reviewer/output/scrubber.rb +0 -48
  87. data/lib/reviewer/output/token.rb +0 -85
data/Gemfile.lock CHANGED
@@ -1,119 +1,340 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- reviewer (0.1.5)
5
- rainbow
6
- slop
4
+ reviewer (1.0.0)
5
+ benchmark (~> 0.5)
6
+ pstore (~> 0.2)
7
+ rainbow (~> 3.1)
8
+ ruby-progressbar (~> 1.13)
9
+ slop (~> 4.10)
7
10
 
8
11
  GEM
9
12
  remote: https://rubygems.org/
10
13
  specs:
11
- ast (2.4.2)
12
- bundler-audit (0.9.0.1)
13
- bundler (>= 1.2.0, < 3)
14
+ activesupport (8.1.1)
15
+ base64
16
+ bigdecimal
17
+ concurrent-ruby (~> 1.0, >= 1.3.1)
18
+ connection_pool (>= 2.2.5)
19
+ drb
20
+ i18n (>= 1.6, < 2)
21
+ json
22
+ logger (>= 1.4.2)
23
+ minitest (>= 5.1)
24
+ securerandom (>= 0.3)
25
+ tzinfo (~> 2.0, >= 2.0.5)
26
+ uri (>= 0.13.1)
27
+ addressable (2.8.8)
28
+ public_suffix (>= 2.0.2, < 8.0)
29
+ arrayfields (4.9.2)
30
+ ast (2.4.3)
31
+ axiom-types (0.1.1)
32
+ descendants_tracker (~> 0.0.4)
33
+ ice_nine (~> 0.11.0)
34
+ thread_safe (~> 0.3, >= 0.3.1)
35
+ base64 (0.3.0)
36
+ benchmark (0.5.0)
37
+ bigdecimal (3.3.1)
38
+ brakeman (7.1.1)
39
+ racc
40
+ bundler-audit (0.9.3)
41
+ bundler (>= 1.2.0)
14
42
  thor (~> 1.0)
15
- codecov (0.6.0)
16
- simplecov (>= 0.15, < 0.22)
43
+ cane (2.6.2)
44
+ parallel
45
+ chronic (0.10.2)
46
+ churn (1.0.8)
47
+ chronic (>= 0.2.3)
48
+ hirb
49
+ main
50
+ ruby_parser (~> 3.0)
51
+ sexp_processor (~> 4.1)
52
+ code_analyzer (0.5.5)
53
+ sexp_processor
54
+ code_metrics (0.1.3)
17
55
  coderay (1.1.3)
18
- docile (1.4.0)
56
+ coercible (1.0.0)
57
+ descendants_tracker (~> 0.0.1)
58
+ concurrent-ruby (1.3.6)
59
+ connection_pool (3.0.2)
60
+ csv (3.3.5)
61
+ date (3.5.1)
62
+ debride (1.14.0)
63
+ path_expander (~> 2.0)
64
+ prism (~> 1.5)
65
+ sexp_processor (~> 4.17)
66
+ descendants_tracker (0.0.4)
67
+ thread_safe (~> 0.3, >= 0.3.1)
68
+ docile (1.4.1)
69
+ drb (2.2.3)
70
+ dry-configurable (1.3.0)
71
+ dry-core (~> 1.1)
72
+ zeitwerk (~> 2.6)
73
+ dry-core (1.1.0)
74
+ concurrent-ruby (~> 1.0)
75
+ logger
76
+ zeitwerk (~> 2.6)
77
+ dry-inflector (1.2.0)
78
+ dry-initializer (3.2.0)
79
+ dry-logic (1.6.0)
80
+ bigdecimal
81
+ concurrent-ruby (~> 1.0)
82
+ dry-core (~> 1.1)
83
+ zeitwerk (~> 2.6)
84
+ dry-schema (1.14.1)
85
+ concurrent-ruby (~> 1.0)
86
+ dry-configurable (~> 1.0, >= 1.0.1)
87
+ dry-core (~> 1.1)
88
+ dry-initializer (~> 3.2)
89
+ dry-logic (~> 1.5)
90
+ dry-types (~> 1.8)
91
+ zeitwerk (~> 2.6)
92
+ dry-types (1.8.3)
93
+ bigdecimal (~> 3.0)
94
+ concurrent-ruby (~> 1.0)
95
+ dry-core (~> 1.0)
96
+ dry-inflector (~> 1.0)
97
+ dry-logic (~> 1.4)
98
+ zeitwerk (~> 2.6)
99
+ erb (5.1.3)
100
+ erubi (1.13.1)
19
101
  erubis (2.7.0)
20
- flay (2.12.1)
21
- erubis (~> 2.7.0)
22
- path_expander (~> 1.0)
23
- ruby_parser (~> 3.0)
102
+ fasterer (0.11.0)
103
+ ruby_parser (>= 3.19.1)
104
+ fattr (2.4.0)
105
+ flay (2.14.0)
106
+ erubi (~> 1.10)
107
+ path_expander (~> 2.0)
108
+ prism (~> 1.5)
24
109
  sexp_processor (~> 4.0)
25
- flog (4.6.4)
26
- path_expander (~> 1.0)
27
- ruby_parser (~> 3.1, > 3.1.0)
110
+ flog (4.9.0)
111
+ path_expander (~> 2.0)
112
+ prism (~> 1.5)
28
113
  sexp_processor (~> 4.8)
114
+ hirb (0.7.3)
115
+ i18n (1.14.7)
116
+ concurrent-ruby (~> 1.0)
117
+ ice_nine (0.11.2)
29
118
  inch (0.8.0)
30
119
  pry
31
120
  sparkr (>= 0.2.0)
32
121
  term-ansicolor
33
122
  yard (~> 0.9.12)
34
- kwalify (0.7.2)
35
- method_source (1.0.0)
36
- minitest (5.15.0)
37
- minitest-heat (1.1.0)
123
+ io-console (0.8.2)
124
+ json (2.18.0)
125
+ language_server-protocol (3.17.0.5)
126
+ launchy (2.5.2)
127
+ addressable (~> 2.8)
128
+ license_finder (7.2.1)
129
+ bundler
130
+ csv (~> 3.2)
131
+ rubyzip (>= 1, < 3)
132
+ thor (~> 1.2)
133
+ tomlrb (>= 1.3, < 2.1)
134
+ with_env (= 1.1.0)
135
+ xml-simple (~> 1.1.9)
136
+ lint_roller (1.1.0)
137
+ logger (1.7.0)
138
+ main (6.4.0)
139
+ arrayfields (~> 4.9, >= 4.9.2)
140
+ chronic (~> 0.10, >= 0.10.2)
141
+ fattr (~> 2.4, >= 2.4.0)
142
+ map (~> 6.6, >= 6.6.0)
143
+ map (6.6.0)
144
+ method_source (1.1.0)
145
+ metric_fu (4.13.0)
146
+ cane (~> 2.5, >= 2.5.2)
147
+ churn (~> 1.0, >= 1.0.2)
148
+ code_metrics (~> 0.1)
149
+ coderay
150
+ flay (~> 2.1, >= 2.0.1)
151
+ flog (~> 4.1, >= 4.1.1)
152
+ launchy (~> 2.0)
153
+ metric_fu-Saikuro (~> 1.1, >= 1.1.3)
154
+ multi_json
155
+ rails_best_practices (~> 1.14, >= 1.14.3)
156
+ redcard
157
+ reek (>= 5.4.0)
158
+ roodi (~> 5.0.0)
159
+ metric_fu-Saikuro (1.1.3)
160
+ minitest (5.27.0)
161
+ minitest-heat (2.1.0)
38
162
  minitest
39
- parallel (1.21.0)
40
- parser (3.0.3.2)
163
+ mize (0.6.1)
164
+ multi_json (1.18.0)
165
+ parallel (1.27.0)
166
+ parser (3.3.10.0)
41
167
  ast (~> 2.4.1)
42
- path_expander (1.1.0)
43
- pry (0.14.1)
168
+ racc
169
+ path_expander (2.0.0)
170
+ prism (1.7.0)
171
+ pry (0.15.2)
44
172
  coderay (~> 1.1)
45
173
  method_source (~> 1.0)
46
- psych (4.0.3)
174
+ pstore (0.2.0)
175
+ psych (5.3.1)
176
+ date
47
177
  stringio
48
- rainbow (3.0.0)
49
- rake (13.0.6)
50
- reek (6.0.6)
51
- kwalify (~> 0.7.0)
52
- parser (~> 3.0.0)
178
+ public_suffix (7.0.0)
179
+ racc (1.8.1)
180
+ rails_best_practices (1.23.3)
181
+ activesupport
182
+ code_analyzer (~> 0.5.5)
183
+ erubis
184
+ i18n
185
+ json
186
+ require_all (~> 3.0)
187
+ ruby-progressbar
188
+ rainbow (3.1.1)
189
+ rake (13.3.1)
190
+ rdoc (7.1.0)
191
+ erb
192
+ psych (>= 4.0.0)
193
+ tsort
194
+ readline (0.0.4)
195
+ reline
196
+ redcard (1.1.0)
197
+ reek (6.5.0)
198
+ dry-schema (~> 1.13)
199
+ logger (~> 1.6)
200
+ parser (~> 3.3.0)
53
201
  rainbow (>= 2.0, < 4.0)
54
- regexp_parser (2.2.0)
55
- rexml (3.2.5)
56
- rubocop (1.23.0)
202
+ rexml (~> 3.1)
203
+ regexp_parser (2.11.3)
204
+ reline (0.6.3)
205
+ io-console (~> 0.5)
206
+ require_all (3.0.0)
207
+ rexml (3.4.4)
208
+ roodi (5.0.0)
209
+ ruby_parser (~> 3.2, >= 3.2.2)
210
+ rubocop (1.81.7)
211
+ json (~> 2.3)
212
+ language_server-protocol (~> 3.17.0.2)
213
+ lint_roller (~> 1.1.0)
57
214
  parallel (~> 1.10)
58
- parser (>= 3.0.0.0)
215
+ parser (>= 3.3.0.2)
59
216
  rainbow (>= 2.2.2, < 4.0)
60
- regexp_parser (>= 1.8, < 3.0)
61
- rexml
62
- rubocop-ast (>= 1.12.0, < 2.0)
217
+ regexp_parser (>= 2.9.3, < 3.0)
218
+ rubocop-ast (>= 1.47.1, < 2.0)
63
219
  ruby-progressbar (~> 1.7)
64
- unicode-display_width (>= 1.4.0, < 3.0)
65
- rubocop-ast (1.15.0)
66
- parser (>= 3.0.1.1)
67
- rubocop-minitest (0.17.0)
68
- rubocop (>= 0.90, < 2.0)
69
- rubocop-rake (0.6.0)
70
- rubocop (~> 1.0)
71
- ruby-progressbar (1.11.0)
72
- ruby_parser (3.18.1)
220
+ unicode-display_width (>= 2.4.0, < 4.0)
221
+ rubocop-ast (1.48.0)
222
+ parser (>= 3.3.7.2)
223
+ prism (~> 1.4)
224
+ rubocop-minitest (0.38.2)
225
+ lint_roller (~> 1.1)
226
+ rubocop (>= 1.75.0, < 2.0)
227
+ rubocop-ast (>= 1.38.0, < 2.0)
228
+ rubocop-performance (1.26.1)
229
+ lint_roller (~> 1.1)
230
+ rubocop (>= 1.75.0, < 2.0)
231
+ rubocop-ast (>= 1.47.1, < 2.0)
232
+ rubocop-rake (0.7.1)
233
+ lint_roller (~> 1.1)
234
+ rubocop (>= 1.72.1)
235
+ ruby-progressbar (1.13.0)
236
+ ruby_parser (3.22.0)
237
+ racc (~> 1.5)
73
238
  sexp_processor (~> 4.16)
74
- sexp_processor (4.16.0)
75
- simplecov (0.21.2)
239
+ rubycritic (4.11.0)
240
+ flay (~> 2.13)
241
+ flog (~> 4.7)
242
+ launchy (>= 2.5.2)
243
+ parser (>= 3.3.0.5)
244
+ rainbow (~> 3.1.1)
245
+ reek (~> 6.5.0, < 7.0)
246
+ rexml
247
+ ruby_parser (~> 3.21)
248
+ simplecov (>= 0.22.0)
249
+ tty-which (~> 0.5.0)
250
+ virtus (~> 2.0)
251
+ rubyzip (2.4.1)
252
+ rufo (0.18.1)
253
+ securerandom (0.4.1)
254
+ sexp_processor (4.17.4)
255
+ simplecov (0.22.0)
76
256
  docile (~> 1.1)
77
257
  simplecov-html (~> 0.11)
78
258
  simplecov_json_formatter (~> 0.1)
79
- simplecov-html (0.12.3)
80
- simplecov_json_formatter (0.1.3)
81
- slop (4.9.1)
259
+ simplecov-html (0.13.2)
260
+ simplecov_json_formatter (0.1.4)
261
+ slop (4.10.1)
82
262
  sparkr (0.4.1)
83
- stringio (3.0.1)
263
+ standard (1.52.0)
264
+ language_server-protocol (~> 3.17.0.2)
265
+ lint_roller (~> 1.0)
266
+ rubocop (~> 1.81.7)
267
+ standard-custom (~> 1.0.0)
268
+ standard-performance (~> 1.8)
269
+ standard-custom (1.0.2)
270
+ lint_roller (~> 1.0)
271
+ rubocop (~> 1.50)
272
+ standard-performance (1.9.0)
273
+ lint_roller (~> 1.1)
274
+ rubocop-performance (~> 1.26.0)
275
+ stringio (3.2.0)
84
276
  sync (0.5.0)
85
- term-ansicolor (1.7.1)
86
- tins (~> 1.0)
87
- thor (1.1.0)
88
- tins (1.29.1)
277
+ term-ansicolor (1.11.3)
278
+ tins (~> 1)
279
+ thor (1.4.0)
280
+ thread_safe (0.3.6)
281
+ tins (1.51.0)
282
+ bigdecimal
283
+ mize (~> 0.6)
284
+ readline
89
285
  sync
90
- unicode-display_width (2.1.0)
91
- webrick (1.7.0)
92
- yard (0.9.27)
93
- webrick (~> 1.7.0)
286
+ tomlrb (2.0.4)
287
+ tsort (0.2.0)
288
+ tty-which (0.5.0)
289
+ tzinfo (2.0.6)
290
+ concurrent-ruby (~> 1.0)
291
+ unicode-display_width (3.2.0)
292
+ unicode-emoji (~> 4.1)
293
+ unicode-emoji (4.2.0)
294
+ uri (1.1.1)
295
+ virtus (2.0.0)
296
+ axiom-types (~> 0.1)
297
+ coercible (~> 1.0)
298
+ descendants_tracker (~> 0.0, >= 0.0.3)
299
+ with_env (1.1.0)
300
+ xml-simple (1.1.9)
301
+ rexml
302
+ yard (0.9.38)
303
+ yardstick (0.9.9)
304
+ yard (~> 0.8, >= 0.8.7.2)
305
+ zeitwerk (2.6.18)
94
306
 
95
307
  PLATFORMS
308
+ arm64-darwin-24
96
309
  ruby
97
- x86_64-darwin-20
98
- x86_64-linux
99
310
 
100
311
  DEPENDENCIES
312
+ brakeman
101
313
  bundler-audit
102
- codecov
314
+ debride
315
+ fasterer
103
316
  flay
104
317
  flog
105
318
  inch
106
- minitest
107
- minitest-heat
108
- psych
109
- rake (~> 13.0)
319
+ license_finder
320
+ metric_fu
321
+ minitest (~> 5.27)
322
+ minitest-heat (~> 2.1)
323
+ racc
324
+ rake (~> 13.2)
325
+ rdoc (~> 7.1)
110
326
  reek
111
327
  reviewer!
112
328
  rubocop
113
329
  rubocop-minitest
114
330
  rubocop-rake
115
- simplecov
116
- yard
331
+ rubycritic
332
+ rufo
333
+ simplecov (~> 0.22)
334
+ simplecov_json_formatter (~> 0.1)
335
+ standard (>= 1.35.1)
336
+ yard (~> 0.9)
337
+ yardstick
117
338
 
118
339
  BUNDLED WITH
119
- 2.2.33
340
+ 2.7.2
data/LICENSE.txt CHANGED
@@ -1,5 +1,21 @@
1
- Copyright (c) Garrett Dimon
1
+ The MIT License (MIT)
2
2
 
3
- Reviewer is an Open Source project licensed under the terms of
4
- the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
- for license text.
3
+ Copyright (c) 2021 Garrett Dimon
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.