rubocop-minitest 0.8.0 → 0.10.2

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +15 -3
  3. data/.rubocop.yml +3 -1
  4. data/.rubocop_todo.yml +7 -13
  5. data/CHANGELOG.md +52 -0
  6. data/Gemfile +1 -1
  7. data/README.md +18 -2
  8. data/Rakefile +29 -0
  9. data/config/default.yml +96 -16
  10. data/docs/antora.yml +7 -0
  11. data/docs/modules/ROOT/nav.adoc +6 -0
  12. data/docs/modules/ROOT/pages/cops.adoc +48 -0
  13. data/docs/modules/ROOT/pages/cops_minitest.adoc +1014 -0
  14. data/docs/modules/ROOT/pages/index.adoc +5 -0
  15. data/docs/modules/ROOT/pages/installation.adoc +15 -0
  16. data/docs/modules/ROOT/pages/usage.adoc +32 -0
  17. data/{manual → legacy-docs}/cops.md +0 -0
  18. data/{manual → legacy-docs}/cops_minitest.md +0 -0
  19. data/{manual → legacy-docs}/index.md +0 -0
  20. data/{manual → legacy-docs}/installation.md +0 -0
  21. data/{manual → legacy-docs}/usage.md +0 -0
  22. data/lib/rubocop/cop/generator.rb +56 -0
  23. data/lib/rubocop/cop/minitest/assert_empty_literal.rb +15 -0
  24. data/lib/rubocop/cop/minitest/assert_in_delta.rb +27 -0
  25. data/lib/rubocop/cop/minitest/assert_kind_of.rb +25 -0
  26. data/lib/rubocop/cop/minitest/assert_output.rb +49 -0
  27. data/lib/rubocop/cop/minitest/assert_path_exists.rb +58 -0
  28. data/lib/rubocop/cop/minitest/assert_silent.rb +45 -0
  29. data/lib/rubocop/cop/minitest/assertion_in_lifecycle_hook.rb +43 -0
  30. data/lib/rubocop/cop/minitest/global_expectations.rb +27 -13
  31. data/lib/rubocop/cop/minitest/literal_as_actual_argument.rb +52 -0
  32. data/lib/rubocop/cop/minitest/multiple_assertions.rb +63 -0
  33. data/lib/rubocop/cop/minitest/refute_equal.rb +1 -1
  34. data/lib/rubocop/cop/minitest/refute_in_delta.rb +27 -0
  35. data/lib/rubocop/cop/minitest/refute_kind_of.rb +25 -0
  36. data/lib/rubocop/cop/minitest/refute_path_exists.rb +58 -0
  37. data/lib/rubocop/cop/minitest/test_method_name.rb +70 -0
  38. data/lib/rubocop/cop/minitest/unspecified_exception.rb +36 -0
  39. data/lib/rubocop/cop/minitest_cops.rb +15 -0
  40. data/lib/rubocop/cop/mixin/argument_range_helper.rb +10 -0
  41. data/lib/rubocop/cop/mixin/in_delta_mixin.rb +50 -0
  42. data/lib/rubocop/cop/mixin/minitest_cop_rule.rb +2 -4
  43. data/lib/rubocop/cop/mixin/minitest_exploration_helpers.rb +84 -0
  44. data/lib/rubocop/minitest/version.rb +8 -1
  45. data/mkdocs.yml +2 -2
  46. data/relnotes/v0.10.0.md +21 -0
  47. data/relnotes/v0.10.1.md +5 -0
  48. data/relnotes/v0.10.2.md +5 -0
  49. data/relnotes/v0.8.1.md +5 -0
  50. data/relnotes/v0.9.0.md +10 -0
  51. data/rubocop-minitest.gemspec +5 -5
  52. data/tasks/cops_documentation.rake +15 -264
  53. data/tasks/cut_release.rake +16 -0
  54. metadata +52 -18
@@ -22,9 +22,7 @@ module RuboCop
22
22
  # @param inverse [Boolean] An optional param. Order of arguments replaced by auto-correction.
23
23
  #
24
24
  def define_rule(assertion_method, target_method:, preferred_method: nil, inverse: false)
25
- if preferred_method.nil?
26
- preferred_method = "#{assertion_method}_#{target_method.to_s.delete('?')}"
27
- end
25
+ preferred_method = "#{assertion_method}_#{target_method.to_s.delete('?')}" if preferred_method.nil?
28
26
 
29
27
  class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
30
28
  include ArgumentRangeHelper
@@ -59,7 +57,7 @@ module RuboCop
59
57
  private
60
58
 
61
59
  def peel_redundant_parentheses_from(arguments)
62
- return arguments unless arguments.first.begin_type?
60
+ return arguments unless arguments.first&.begin_type?
63
61
 
64
62
  peel_redundant_parentheses_from(arguments.first.children)
65
63
  end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+
5
+ module RuboCop
6
+ module Cop
7
+ # Helper methods for different explorations against test files and test cases.
8
+ module MinitestExplorationHelpers
9
+ extend NodePattern::Macros
10
+
11
+ ASSERTION_PREFIXES = %w[assert refute].freeze
12
+
13
+ LIFECYCLE_HOOK_METHODS = %i[
14
+ before_setup
15
+ setup
16
+ after_setup
17
+ before_teardown
18
+ teardown
19
+ after_teardown
20
+ ].to_set.freeze
21
+
22
+ private
23
+
24
+ def test_class?(class_node)
25
+ class_node.parent_class && class_node.identifier.source.end_with?('Test')
26
+ end
27
+
28
+ def test_case?(node)
29
+ return false unless node&.def_type? && test_case_name?(node.method_name)
30
+
31
+ class_ancestor = node.each_ancestor(:class).first
32
+ test_class?(class_ancestor)
33
+ end
34
+
35
+ def test_cases(class_node)
36
+ class_def_nodes(class_node)
37
+ .select { |def_node| test_case_name?(def_node.method_name) }
38
+ end
39
+
40
+ def lifecycle_hooks(class_node)
41
+ class_def_nodes(class_node)
42
+ .select { |def_node| lifecycle_hook_method?(def_node) }
43
+ end
44
+
45
+ def class_def_nodes(class_node)
46
+ class_def = class_node.body
47
+ return [] unless class_def
48
+
49
+ if class_def.def_type?
50
+ [class_def]
51
+ else
52
+ class_def.each_child_node(:def).to_a
53
+ end
54
+ end
55
+
56
+ def test_case_name?(name)
57
+ name.to_s.start_with?('test_')
58
+ end
59
+
60
+ def assertions(def_node)
61
+ method_def = def_node.body
62
+ return [] unless method_def
63
+
64
+ send_nodes =
65
+ if method_def.send_type?
66
+ [method_def]
67
+ else
68
+ method_def.each_child_node(:send)
69
+ end
70
+
71
+ send_nodes.select { |send_node| assertion?(send_node) }
72
+ end
73
+
74
+ def assertion?(node)
75
+ node.send_type? &&
76
+ ASSERTION_PREFIXES.any? { |prefix| node.method_name.to_s.start_with?(prefix) }
77
+ end
78
+
79
+ def lifecycle_hook_method?(node)
80
+ node.def_type? && LIFECYCLE_HOOK_METHODS.include?(node.method_name)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -2,6 +2,13 @@
2
2
 
3
3
  module RuboCop
4
4
  module Minitest
5
- VERSION = '0.8.0'
5
+ # This module holds the RuboCop Minitest version information.
6
+ module Version
7
+ STRING = '0.10.2'
8
+
9
+ def self.document_version
10
+ STRING.match('\d+\.\d+').to_s
11
+ end
12
+ end
6
13
  end
7
14
  end
data/mkdocs.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  site_name: "A RuboCop extension focused on enforcing Minitest best practices and coding conventions."
2
2
  repo_url: https://github.com/rubocop-hq/rubocop-minitest
3
- edit_uri: edit/master/manual/
3
+ edit_uri: edit/master/legacy-docs/
4
4
  copyright: "Copyright &copy; 2019 Bozhidar Batsov, Jonas Arvidsson, Koichi ITO, and RuboCop contributors"
5
- docs_dir: manual
5
+ docs_dir: legacy-docs
6
6
  pages:
7
7
  - Home: index.md
8
8
  - Installation: installation.md
@@ -0,0 +1,21 @@
1
+ ### New features
2
+
3
+ * [#92](https://github.com/rubocop-hq/rubocop-minitest/pull/92): Add new `Minitest/LiteralAsActualArgument` cop. ([@fatkodima][], [@tsmmark][])
4
+ * [#95](https://github.com/rubocop-hq/rubocop-minitest/pull/95): Add new `Minitest/AssertionInLifecycleHook` cop. ([@fatkodima][])
5
+ * [#91](https://github.com/rubocop-hq/rubocop-minitest/pull/91): Add new `Minitest/AssertInDelta` and `Minitest/RefuteInDelta` cops. ([@fatkodima][])
6
+ * [#89](https://github.com/rubocop-hq/rubocop-minitest/pull/89): Add new `Minitest/TestMethodName` cop. ([@fatkodima][])
7
+ * [#83](https://github.com/rubocop-hq/rubocop-minitest/pull/83): New cops `AssertPathExists` and `RefutePathExists` check for use of `assert_path_exists`/`refute_path_exists` instead of `assert(File.exist?(path))`/`refute(File.exist?(path))`. ([@fatkodima][])
8
+ * [#88](https://github.com/rubocop-hq/rubocop-minitest/pull/88): Add new `Minitest/MultipleAssertions` cop. ([@fatkodima][])
9
+ * [#87](https://github.com/rubocop-hq/rubocop-minitest/pull/87): Add new `Minitest/AssertSilent` cop. ([@fatkodima][])
10
+ * [#96](https://github.com/rubocop-hq/rubocop-minitest/pull/96): Add new `Minitest/UnspecifiedException` cop. ([@fatkodima][])
11
+ * [#98](https://github.com/rubocop-hq/rubocop-minitest/pull/98): Add new `Minitest/AssertOutput` cop. ([@fatkodima][])
12
+ * [#84](https://github.com/rubocop-hq/rubocop-minitest/pull/84): New cops `AssertKindOf` and `RefuteKindOf` check for use of `assert_kind_of`/`refute_kind_of` instead of `assert(foo.kind_of?(Class))`/`refute(foo.kind_of?(Class))`. ([@fatkodima][])
13
+ * [#85](https://github.com/rubocop-hq/rubocop-minitest/pull/85): Add autocorrect to `Rails/AssertEmptyLiteral` cop. ([@fatkodima][])
14
+
15
+ ### Changes
16
+
17
+ * [#104](https://github.com/rubocop-hq/rubocop-minitest/pull/104): Require RuboCop 0.87 or higher. ([@koic][])
18
+
19
+ [@fatkodima]: https://github.com/fatkodima
20
+ [@tsmmark]: https://github.com/tsmmark
21
+ [@koic]: https://github.com/koic
@@ -0,0 +1,5 @@
1
+ ### Bug fixes
2
+
3
+ * [#106](https://github.com/rubocop-hq/rubocop-minitest/issues/106): Fix an error for `Minitest/AssertOutput` when using gvar at top level. ([@koic][])
4
+
5
+ [@koic]: https://github.com/koic
@@ -0,0 +1,5 @@
1
+ ### Bug fixes
2
+
3
+ * [#113](https://github.com/rubocop-hq/rubocop-minitest/issues/113): This PR fixes an error for `Minitest/AssertEqual` and some cops when using `assert` with block argument. ([@koic][])
4
+
5
+ [@koic]: https://github.com/koic
@@ -0,0 +1,5 @@
1
+ ### Bug fixes
2
+
3
+ * [#72](https://github.com/rubocop-hq/rubocop-minitest/pull/72): Fix some false negatives for `Minitest/GlobalExpectations`. ([@andrykonchin][])
4
+
5
+ [@andrykonchin]: https://github.com/andrykonchin
@@ -0,0 +1,10 @@
1
+ ### Bug fixes
2
+
3
+ * [#75](https://github.com/rubocop-hq/rubocop-minitest/issues/75): Fix a false negative for `Minitest/GlobalExpectations` when using global expectation methods with no arguments. ([@koic][])
4
+
5
+ ### Changes
6
+
7
+ * [#73](https://github.com/rubocop-hq/rubocop-minitest/issues/73): The Minitest department works on file names end with `_test.rb` by default. ([@koic][])
8
+ * [#77](https://github.com/rubocop-hq/rubocop-minitest/pull/77): **(BREAKING)** Drop support for Ruby 2.3. ([@koic][])
9
+
10
+ [@koic]: https://github.com/koic
@@ -6,7 +6,7 @@ require 'rubocop/minitest/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'rubocop-minitest'
9
- spec.version = RuboCop::Minitest::VERSION
9
+ spec.version = RuboCop::Minitest::Version::STRING
10
10
  spec.authors = ['Bozhidar Batsov', 'Jonas Arvidsson', 'Koichi ITO']
11
11
 
12
12
  spec.summary = 'Automatic Minitest code style checking tool.'
@@ -16,12 +16,12 @@ Gem::Specification.new do |spec|
16
16
  DESCRIPTION
17
17
  spec.license = 'MIT'
18
18
 
19
- spec.required_ruby_version = '>= 2.3.0'
19
+ spec.required_ruby_version = '>= 2.4.0'
20
20
  spec.metadata = {
21
- 'homepage_uri' => 'https://docs.rubocop.org/projects/minitest/',
21
+ 'homepage_uri' => 'https://docs.rubocop.org/rubocop-minitest/',
22
22
  'changelog_uri' => 'https://github.com/rubocop-hq/rubocop-minitest/blob/master/CHANGELOG.md',
23
23
  'source_code_uri' => 'https://github.com/rubocop-hq/rubocop-minitest',
24
- 'documentation_uri' => 'https://docs.rubocop.org/projects/minitest/',
24
+ 'documentation_uri' => "https://docs.rubocop.org/rubocop-minitest/#{RuboCop::Minitest::Version.document_version}",
25
25
  'bug_tracker_uri' => 'https://github.com/rubocop-hq/rubocop-minitest/issues'
26
26
  }
27
27
 
@@ -34,6 +34,6 @@ Gem::Specification.new do |spec|
34
34
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
35
  spec.require_paths = ['lib']
36
36
 
37
- spec.add_runtime_dependency 'rubocop', '>= 0.74'
37
+ spec.add_runtime_dependency 'rubocop', '>= 0.87', '< 2.0'
38
38
  spec.add_development_dependency 'minitest', '~> 5.11'
39
39
  end
@@ -3,6 +3,7 @@
3
3
  require 'yard'
4
4
  require 'rubocop'
5
5
  require 'rubocop-minitest'
6
+ require 'rubocop/cops_documentation_generator'
6
7
 
7
8
  YARD::Rake::YardocTask.new(:yard_for_generate_documentation) do |task|
8
9
  task.files = ['lib/rubocop/cop/**/*.rb']
@@ -11,273 +12,23 @@ end
11
12
 
12
13
  desc 'Generate docs of all cops departments'
13
14
  task generate_cops_documentation: :yard_for_generate_documentation do
14
- def cops_of_department(cops, department)
15
- cops.with_department(department).sort!
16
- end
17
-
18
- def cops_body(config, cop, description, examples_objects, pars)
19
- content = h2(cop.cop_name)
20
- content << properties(config, cop)
21
- content << "#{description}\n"
22
- content << examples(examples_objects) if examples_objects.count.positive?
23
- content << configurations(pars)
24
- content << references(config, cop)
25
- content
26
- end
27
-
28
- def examples(examples_object)
29
- examples_object.each_with_object(h3('Examples').dup) do |example, content|
30
- content << h4(example.name) unless example.name == ''
31
- content << code_example(example)
32
- end
33
- end
34
-
35
- # rubocop:disable Metrics/MethodLength
36
- def properties(config, cop)
37
- header = [
38
- 'Enabled by default', 'Safe', 'Supports autocorrection', 'VersionAdded',
39
- 'VersionChanged'
40
- ]
41
- config = config.for_cop(cop)
42
- safe_auto_correct = config.fetch('SafeAutoCorrect', true)
43
- autocorrect = if cop.new.support_autocorrect?
44
- "Yes #{'(Unsafe)' unless safe_auto_correct}"
45
- else
46
- 'No'
47
- end
48
- content = [[
49
- config.fetch('Enabled') ? 'Enabled' : 'Disabled',
50
- config.fetch('Safe', true) ? 'Yes' : 'No',
51
- autocorrect,
52
- config.fetch('VersionAdded', '-'),
53
- config.fetch('VersionChanged', '-')
54
- ]]
55
- to_table(header, content) + "\n"
56
- end
57
- # rubocop:enable Metrics/MethodLength
58
-
59
- def h2(title)
60
- content = +"\n"
61
- content << "## #{title}\n"
62
- content << "\n"
63
- content
64
- end
65
-
66
- def h3(title)
67
- content = +"\n"
68
- content << "### #{title}\n"
69
- content << "\n"
70
- content
71
- end
72
-
73
- def h4(title)
74
- content = +"#### #{title}\n"
75
- content << "\n"
76
- content
77
- end
78
-
79
- def code_example(ruby_code)
80
- content = +"```ruby\n"
81
- content << ruby_code.text
82
- .gsub('@good', '# good').gsub('@bad', '# bad').strip
83
- content << "\n```\n"
84
- content
85
- end
86
-
87
- def configurations(pars)
88
- return '' if pars.empty?
89
-
90
- header = ['Name', 'Default value', 'Configurable values']
91
- configs = pars.each_key.reject { |key| key.start_with?('Supported') }
92
- content = configs.map do |name|
93
- configurable = configurable_values(pars, name)
94
- default = format_table_value(pars[name])
95
- [name, default, configurable]
96
- end
97
-
98
- h3('Configurable attributes') + to_table(header, content)
99
- end
100
-
101
- # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength
102
- def configurable_values(pars, name)
103
- case name
104
- when /^Enforced/
105
- supported_style_name = RuboCop::Cop::Util.to_supported_styles(name)
106
- format_table_value(pars[supported_style_name])
107
- when 'IndentationWidth'
108
- 'Integer'
109
- when 'Database'
110
- format_table_value(pars['SupportedDatabases'])
111
- else
112
- case pars[name]
113
- when String
114
- 'String'
115
- when Integer
116
- 'Integer'
117
- when Float
118
- 'Float'
119
- when true, false
120
- 'Boolean'
121
- when Array
122
- 'Array'
123
- else
124
- ''
125
- end
126
- end
127
- end
128
- # rubocop:enable Metrics/CyclomaticComplexity,Metrics/MethodLength
129
-
130
- def to_table(header, content)
131
- table = [
132
- header.join(' | '),
133
- Array.new(header.size, '---').join(' | ')
134
- ]
135
- table.concat(content.map { |c| c.join(' | ') })
136
- table.join("\n") + "\n"
137
- end
138
-
139
- def format_table_value(val)
140
- value =
141
- case val
142
- when Array
143
- if val.empty?
144
- '`[]`'
145
- else
146
- val.map { |config| format_table_value(config) }.join(', ')
147
- end
148
- else
149
- "`#{val.nil? ? '<none>' : val}`"
150
- end
151
- value.gsub("#{Dir.pwd}/", '').rstrip
152
- end
153
-
154
- def references(config, cop)
155
- cop_config = config.for_cop(cop)
156
- urls = RuboCop::Cop::MessageAnnotator.new(
157
- config, cop.name, cop_config, {}
158
- ).urls
159
- return '' if urls.empty?
160
-
161
- content = h3('References')
162
- content << urls.map { |url| "* [#{url}](#{url})" }.join("\n")
163
- content << "\n"
164
- content
165
- end
166
-
167
- def print_cops_of_department(cops, department, config)
168
- selected_cops = cops_of_department(cops, department).select do |cop|
169
- cop.to_s.start_with?('RuboCop::Cop::Minitest')
170
- end
171
- return if selected_cops.empty?
172
-
173
- content = +"# #{department}\n"
174
- selected_cops.each do |cop|
175
- content << print_cop_with_doc(cop, config)
176
- end
177
- file_name = "#{Dir.pwd}/manual/cops_#{department.downcase}.md"
178
- File.open(file_name, 'w') do |file|
179
- puts "* generated #{file_name}"
180
- file.write(content.strip + "\n")
181
- end
182
- end
183
-
184
- def print_cop_with_doc(cop, config)
185
- t = config.for_cop(cop)
186
- non_display_keys = %w[
187
- Description Enabled StyleGuide Reference Safe SafeAutoCorrect VersionAdded
188
- VersionChanged
189
- ]
190
- pars = t.reject { |k| non_display_keys.include? k }
191
- description = 'No documentation'
192
- examples_object = []
193
- YARD::Registry.all(:class).detect do |code_object|
194
- next unless RuboCop::Cop::Badge.for(code_object.to_s) == cop.badge
195
-
196
- description = code_object.docstring unless code_object.docstring.blank?
197
- examples_object = code_object.tags('example')
198
- end
199
- cops_body(config, cop, description, examples_object, pars)
200
- end
201
-
202
- # rubocop:disable Metrics/AbcSize
203
- def table_of_content_for_department(cops, department)
204
- selected_cops = cops_of_department(cops, department.to_sym).select do |cop|
205
- cop.to_s.start_with?('RuboCop::Cop::Minitest')
206
- end
207
- return if selected_cops.empty?
208
-
209
- type_title = department[0].upcase + department[1..-1]
210
- filename = "cops_#{department.downcase}.md"
211
- content = +"#### Department [#{type_title}](#{filename})\n\n"
212
- selected_cops.each do |cop|
213
- anchor = cop.cop_name.sub('/', '').downcase
214
- content << "* [#{cop.cop_name}](#{filename}##{anchor})\n"
215
- end
216
-
217
- content
218
- end
219
- # rubocop:enable Metrics/AbcSize
220
-
221
- def print_table_of_contents(cops)
222
- path = "#{Dir.pwd}/manual/cops.md"
223
- original = File.read(path)
224
- content = +"<!-- START_COP_LIST -->\n"
225
-
226
- content << table_contents(cops)
227
-
228
- content << "\n<!-- END_COP_LIST -->"
229
-
230
- content = if original.empty?
231
- content
232
- else
233
- original.sub(
234
- /<!-- START_COP_LIST -->.+<!-- END_COP_LIST -->/m, content
235
- )
236
- end
237
- File.write(path, content)
238
- end
239
-
240
- def table_contents(cops)
241
- cops
242
- .departments
243
- .map(&:to_s)
244
- .sort
245
- .map { |department| table_of_content_for_department(cops, department) }
246
- .reject(&:nil?)
247
- .join("\n")
248
- end
249
-
250
- def assert_manual_synchronized
251
- # Do not print diff and yield whether exit code was zero
252
- sh('git diff --quiet manual') do |outcome, _|
253
- return if outcome
254
-
255
- # Output diff before raising error
256
- sh('GIT_PAGER=cat git diff manual')
257
-
258
- warn 'The manual directory is out of sync. ' \
259
- 'Run `rake generate_cops_documentation` and commit the results.'
260
- exit!
261
- end
262
- end
263
-
264
- def main
265
- cops = RuboCop::Cop::Cop.registry
266
- config = RuboCop::ConfigLoader.load_file('config/default.yml')
15
+ deps = ['Minitest']
16
+ CopsDocumentationGenerator.new(departments: deps).call
17
+ end
267
18
 
268
- YARD::Registry.load!
269
- cops.departments.sort!.each do |department|
270
- print_cops_of_department(cops, department, config)
271
- end
19
+ desc 'Verify that documentation is up to date'
20
+ task verify_cops_documentation: :generate_cops_documentation do
21
+ # Do not print diff and yield whether exit code was zero
22
+ sh('git diff --quiet docs') do |outcome, _|
23
+ exit if outcome
272
24
 
273
- print_table_of_contents(cops)
25
+ # Output diff before raising error
26
+ sh('GIT_PAGER=cat git diff docs')
274
27
 
275
- assert_manual_synchronized if ENV['CI'] == 'true'
276
- ensure
277
- RuboCop::ConfigLoader.default_configuration = nil
28
+ warn 'The docs directory is out of sync. ' \
29
+ 'Run `rake generate_cops_documentation` and commit the results.'
30
+ exit!
278
31
  end
279
-
280
- main
281
32
  end
282
33
 
283
34
  desc 'Syntax check for the documentation comments'
@@ -286,7 +37,7 @@ task documentation_syntax_check: :yard_for_generate_documentation do
286
37
 
287
38
  ok = true
288
39
  YARD::Registry.load!
289
- cops = RuboCop::Cop::Cop.registry
40
+ cops = RuboCop::Cop::Registry.global
290
41
  cops.each do |cop|
291
42
  examples = YARD::Registry.all(:class).find do |code_object|
292
43
  next unless RuboCop::Cop::Badge.for(code_object.to_s) == cop.badge