yard-lint 1.2.2 → 1.3.0.rc1

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +174 -1
  3. data/README.md +118 -3
  4. data/Rakefile +20 -0
  5. data/bin/yard-lint +80 -37
  6. data/lib/yard/lint/config.rb +5 -0
  7. data/lib/yard/lint/config_generator.rb +8 -179
  8. data/lib/yard/lint/config_updater.rb +222 -0
  9. data/lib/yard/lint/errors.rb +6 -0
  10. data/lib/yard/lint/executor/in_process_registry.rb +130 -0
  11. data/lib/yard/lint/executor/query_executor.rb +109 -0
  12. data/lib/yard/lint/executor/result_collector.rb +55 -0
  13. data/lib/yard/lint/executor/warning_dispatcher.rb +79 -0
  14. data/lib/yard/lint/results/base.rb +2 -1
  15. data/lib/yard/lint/runner.rb +88 -35
  16. data/lib/yard/lint/stats_calculator.rb +1 -1
  17. data/lib/yard/lint/templates/default_config.yml +279 -0
  18. data/lib/yard/lint/templates/strict_config.yml +283 -0
  19. data/lib/yard/lint/validators/base.rb +52 -118
  20. data/lib/yard/lint/validators/documentation/blank_line_before_definition/config.rb +25 -0
  21. data/lib/yard/lint/validators/documentation/blank_line_before_definition/messages_builder.rb +39 -0
  22. data/lib/yard/lint/validators/documentation/blank_line_before_definition/parser.rb +59 -0
  23. data/lib/yard/lint/validators/documentation/blank_line_before_definition/result.rb +61 -0
  24. data/lib/yard/lint/validators/documentation/blank_line_before_definition/validator.rb +94 -0
  25. data/lib/yard/lint/validators/documentation/blank_line_before_definition.rb +63 -0
  26. data/lib/yard/lint/validators/documentation/empty_comment_line/config.rb +24 -0
  27. data/lib/yard/lint/validators/documentation/empty_comment_line/messages_builder.rb +34 -0
  28. data/lib/yard/lint/validators/documentation/empty_comment_line/parser.rb +60 -0
  29. data/lib/yard/lint/validators/documentation/empty_comment_line/result.rb +25 -0
  30. data/lib/yard/lint/validators/documentation/empty_comment_line/validator.rb +109 -0
  31. data/lib/yard/lint/validators/documentation/empty_comment_line.rb +58 -0
  32. data/lib/yard/lint/validators/documentation/markdown_syntax/validator.rb +36 -21
  33. data/lib/yard/lint/validators/documentation/markdown_syntax.rb +0 -1
  34. data/lib/yard/lint/validators/documentation/undocumented_boolean_methods/validator.rb +19 -29
  35. data/lib/yard/lint/validators/documentation/undocumented_boolean_methods.rb +0 -1
  36. data/lib/yard/lint/validators/documentation/undocumented_method_arguments/validator.rb +18 -34
  37. data/lib/yard/lint/validators/documentation/undocumented_method_arguments.rb +0 -1
  38. data/lib/yard/lint/validators/documentation/undocumented_objects/parser.rb +2 -2
  39. data/lib/yard/lint/validators/documentation/undocumented_objects/validator.rb +17 -25
  40. data/lib/yard/lint/validators/documentation/undocumented_objects.rb +4 -5
  41. data/lib/yard/lint/validators/documentation/undocumented_options/validator.rb +30 -21
  42. data/lib/yard/lint/validators/documentation/undocumented_options.rb +0 -1
  43. data/lib/yard/lint/validators/semantic/abstract_methods/result.rb +2 -2
  44. data/lib/yard/lint/validators/semantic/abstract_methods/validator.rb +31 -43
  45. data/lib/yard/lint/validators/semantic/abstract_methods.rb +0 -1
  46. data/lib/yard/lint/validators/tags/api_tags/validator.rb +24 -39
  47. data/lib/yard/lint/validators/tags/api_tags.rb +0 -1
  48. data/lib/yard/lint/validators/tags/collection_type/parser.rb +1 -1
  49. data/lib/yard/lint/validators/tags/collection_type/validator.rb +37 -66
  50. data/lib/yard/lint/validators/tags/collection_type.rb +0 -1
  51. data/lib/yard/lint/validators/tags/example_syntax/validator.rb +51 -64
  52. data/lib/yard/lint/validators/tags/example_syntax.rb +0 -1
  53. data/lib/yard/lint/validators/tags/informal_notation/config.rb +40 -0
  54. data/lib/yard/lint/validators/tags/informal_notation/messages_builder.rb +35 -0
  55. data/lib/yard/lint/validators/tags/informal_notation/parser.rb +55 -0
  56. data/lib/yard/lint/validators/tags/informal_notation/result.rb +26 -0
  57. data/lib/yard/lint/validators/tags/informal_notation/validator.rb +133 -0
  58. data/lib/yard/lint/validators/tags/informal_notation.rb +45 -0
  59. data/lib/yard/lint/validators/tags/invalid_types/validator.rb +57 -70
  60. data/lib/yard/lint/validators/tags/invalid_types.rb +0 -1
  61. data/lib/yard/lint/validators/tags/meaningless_tag/parser.rb +1 -1
  62. data/lib/yard/lint/validators/tags/meaningless_tag/validator.rb +22 -54
  63. data/lib/yard/lint/validators/tags/meaningless_tag.rb +0 -1
  64. data/lib/yard/lint/validators/tags/non_ascii_type/config.rb +21 -0
  65. data/lib/yard/lint/validators/tags/non_ascii_type/messages_builder.rb +29 -0
  66. data/lib/yard/lint/validators/tags/non_ascii_type/parser.rb +59 -0
  67. data/lib/yard/lint/validators/tags/non_ascii_type/result.rb +25 -0
  68. data/lib/yard/lint/validators/tags/non_ascii_type/validator.rb +50 -0
  69. data/lib/yard/lint/validators/tags/non_ascii_type.rb +39 -0
  70. data/lib/yard/lint/validators/tags/option_tags/result.rb +2 -2
  71. data/lib/yard/lint/validators/tags/option_tags/validator.rb +25 -40
  72. data/lib/yard/lint/validators/tags/option_tags.rb +0 -1
  73. data/lib/yard/lint/validators/tags/order/validator.rb +28 -55
  74. data/lib/yard/lint/validators/tags/order.rb +0 -1
  75. data/lib/yard/lint/validators/tags/redundant_param_description/config.rb +15 -1
  76. data/lib/yard/lint/validators/tags/redundant_param_description/messages_builder.rb +5 -0
  77. data/lib/yard/lint/validators/tags/redundant_param_description/validator.rb +134 -100
  78. data/lib/yard/lint/validators/tags/redundant_param_description.rb +0 -1
  79. data/lib/yard/lint/validators/tags/tag_group_separator/config.rb +29 -0
  80. data/lib/yard/lint/validators/tags/tag_group_separator/messages_builder.rb +49 -0
  81. data/lib/yard/lint/validators/tags/tag_group_separator/parser.rb +67 -0
  82. data/lib/yard/lint/validators/tags/tag_group_separator/result.rb +28 -0
  83. data/lib/yard/lint/validators/tags/tag_group_separator/validator.rb +117 -0
  84. data/lib/yard/lint/validators/tags/tag_group_separator.rb +49 -0
  85. data/lib/yard/lint/validators/tags/tag_type_position/parser.rb +1 -1
  86. data/lib/yard/lint/validators/tags/tag_type_position/validator.rb +53 -84
  87. data/lib/yard/lint/validators/tags/tag_type_position.rb +4 -5
  88. data/lib/yard/lint/validators/tags/type_syntax/parser.rb +8 -3
  89. data/lib/yard/lint/validators/tags/type_syntax/validator.rb +29 -59
  90. data/lib/yard/lint/validators/tags/type_syntax.rb +0 -1
  91. data/lib/yard/lint/validators/warnings/duplicated_parameter_name/validator.rb +1 -18
  92. data/lib/yard/lint/validators/warnings/invalid_directive_format/validator.rb +1 -18
  93. data/lib/yard/lint/validators/warnings/invalid_tag_format/validator.rb +1 -18
  94. data/lib/yard/lint/validators/warnings/unknown_directive/validator.rb +1 -18
  95. data/lib/yard/lint/validators/warnings/unknown_parameter_name/messages_builder.rb +243 -0
  96. data/lib/yard/lint/validators/warnings/unknown_parameter_name/result.rb +4 -3
  97. data/lib/yard/lint/validators/warnings/unknown_parameter_name/validator.rb +1 -18
  98. data/lib/yard/lint/validators/warnings/unknown_tag/messages_builder.rb +144 -0
  99. data/lib/yard/lint/validators/warnings/unknown_tag/result.rb +4 -3
  100. data/lib/yard/lint/validators/warnings/unknown_tag/validator.rb +1 -18
  101. data/lib/yard/lint/validators/warnings/unknown_tag.rb +10 -0
  102. data/lib/yard/lint/version.rb +1 -1
  103. data/lib/yard/lint.rb +81 -13
  104. data/renovate.json +1 -8
  105. metadata +40 -6
  106. data/bin/console +0 -11
  107. data/bin/setup +0 -8
  108. data/lib/yard/lint/command_cache.rb +0 -93
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yard-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -42,8 +42,6 @@ description: A comprehensive linter for YARD documentation that checks for undoc
42
42
  email:
43
43
  - maciej@mensfeld.pl
44
44
  executables:
45
- - console
46
- - setup
47
45
  - yard-lint
48
46
  extensions: []
49
47
  extra_rdoc_files: []
@@ -53,16 +51,18 @@ files:
53
51
  - LICENSE.txt
54
52
  - README.md
55
53
  - Rakefile
56
- - bin/console
57
- - bin/setup
58
54
  - bin/yard-lint
59
55
  - lib/yard-lint.rb
60
56
  - lib/yard/lint.rb
61
- - lib/yard/lint/command_cache.rb
62
57
  - lib/yard/lint/config.rb
63
58
  - lib/yard/lint/config_generator.rb
64
59
  - lib/yard/lint/config_loader.rb
60
+ - lib/yard/lint/config_updater.rb
65
61
  - lib/yard/lint/errors.rb
62
+ - lib/yard/lint/executor/in_process_registry.rb
63
+ - lib/yard/lint/executor/query_executor.rb
64
+ - lib/yard/lint/executor/result_collector.rb
65
+ - lib/yard/lint/executor/warning_dispatcher.rb
66
66
  - lib/yard/lint/ext/irb_notifier_shim.rb
67
67
  - lib/yard/lint/formatters/progress.rb
68
68
  - lib/yard/lint/git.rb
@@ -74,8 +74,22 @@ files:
74
74
  - lib/yard/lint/results/base.rb
75
75
  - lib/yard/lint/runner.rb
76
76
  - lib/yard/lint/stats_calculator.rb
77
+ - lib/yard/lint/templates/default_config.yml
78
+ - lib/yard/lint/templates/strict_config.yml
77
79
  - lib/yard/lint/validators/base.rb
78
80
  - lib/yard/lint/validators/config.rb
81
+ - lib/yard/lint/validators/documentation/blank_line_before_definition.rb
82
+ - lib/yard/lint/validators/documentation/blank_line_before_definition/config.rb
83
+ - lib/yard/lint/validators/documentation/blank_line_before_definition/messages_builder.rb
84
+ - lib/yard/lint/validators/documentation/blank_line_before_definition/parser.rb
85
+ - lib/yard/lint/validators/documentation/blank_line_before_definition/result.rb
86
+ - lib/yard/lint/validators/documentation/blank_line_before_definition/validator.rb
87
+ - lib/yard/lint/validators/documentation/empty_comment_line.rb
88
+ - lib/yard/lint/validators/documentation/empty_comment_line/config.rb
89
+ - lib/yard/lint/validators/documentation/empty_comment_line/messages_builder.rb
90
+ - lib/yard/lint/validators/documentation/empty_comment_line/parser.rb
91
+ - lib/yard/lint/validators/documentation/empty_comment_line/result.rb
92
+ - lib/yard/lint/validators/documentation/empty_comment_line/validator.rb
79
93
  - lib/yard/lint/validators/documentation/markdown_syntax.rb
80
94
  - lib/yard/lint/validators/documentation/markdown_syntax/config.rb
81
95
  - lib/yard/lint/validators/documentation/markdown_syntax/messages_builder.rb
@@ -128,6 +142,12 @@ files:
128
142
  - lib/yard/lint/validators/tags/example_syntax/parser.rb
129
143
  - lib/yard/lint/validators/tags/example_syntax/result.rb
130
144
  - lib/yard/lint/validators/tags/example_syntax/validator.rb
145
+ - lib/yard/lint/validators/tags/informal_notation.rb
146
+ - lib/yard/lint/validators/tags/informal_notation/config.rb
147
+ - lib/yard/lint/validators/tags/informal_notation/messages_builder.rb
148
+ - lib/yard/lint/validators/tags/informal_notation/parser.rb
149
+ - lib/yard/lint/validators/tags/informal_notation/result.rb
150
+ - lib/yard/lint/validators/tags/informal_notation/validator.rb
131
151
  - lib/yard/lint/validators/tags/invalid_types.rb
132
152
  - lib/yard/lint/validators/tags/invalid_types/config.rb
133
153
  - lib/yard/lint/validators/tags/invalid_types/messages_builder.rb
@@ -140,6 +160,12 @@ files:
140
160
  - lib/yard/lint/validators/tags/meaningless_tag/parser.rb
141
161
  - lib/yard/lint/validators/tags/meaningless_tag/result.rb
142
162
  - lib/yard/lint/validators/tags/meaningless_tag/validator.rb
163
+ - lib/yard/lint/validators/tags/non_ascii_type.rb
164
+ - lib/yard/lint/validators/tags/non_ascii_type/config.rb
165
+ - lib/yard/lint/validators/tags/non_ascii_type/messages_builder.rb
166
+ - lib/yard/lint/validators/tags/non_ascii_type/parser.rb
167
+ - lib/yard/lint/validators/tags/non_ascii_type/result.rb
168
+ - lib/yard/lint/validators/tags/non_ascii_type/validator.rb
143
169
  - lib/yard/lint/validators/tags/option_tags.rb
144
170
  - lib/yard/lint/validators/tags/option_tags/config.rb
145
171
  - lib/yard/lint/validators/tags/option_tags/messages_builder.rb
@@ -158,6 +184,12 @@ files:
158
184
  - lib/yard/lint/validators/tags/redundant_param_description/parser.rb
159
185
  - lib/yard/lint/validators/tags/redundant_param_description/result.rb
160
186
  - lib/yard/lint/validators/tags/redundant_param_description/validator.rb
187
+ - lib/yard/lint/validators/tags/tag_group_separator.rb
188
+ - lib/yard/lint/validators/tags/tag_group_separator/config.rb
189
+ - lib/yard/lint/validators/tags/tag_group_separator/messages_builder.rb
190
+ - lib/yard/lint/validators/tags/tag_group_separator/parser.rb
191
+ - lib/yard/lint/validators/tags/tag_group_separator/result.rb
192
+ - lib/yard/lint/validators/tags/tag_group_separator/validator.rb
161
193
  - lib/yard/lint/validators/tags/tag_type_position.rb
162
194
  - lib/yard/lint/validators/tags/tag_type_position/config.rb
163
195
  - lib/yard/lint/validators/tags/tag_type_position/messages_builder.rb
@@ -192,11 +224,13 @@ files:
192
224
  - lib/yard/lint/validators/warnings/unknown_directive/validator.rb
193
225
  - lib/yard/lint/validators/warnings/unknown_parameter_name.rb
194
226
  - lib/yard/lint/validators/warnings/unknown_parameter_name/config.rb
227
+ - lib/yard/lint/validators/warnings/unknown_parameter_name/messages_builder.rb
195
228
  - lib/yard/lint/validators/warnings/unknown_parameter_name/parser.rb
196
229
  - lib/yard/lint/validators/warnings/unknown_parameter_name/result.rb
197
230
  - lib/yard/lint/validators/warnings/unknown_parameter_name/validator.rb
198
231
  - lib/yard/lint/validators/warnings/unknown_tag.rb
199
232
  - lib/yard/lint/validators/warnings/unknown_tag/config.rb
233
+ - lib/yard/lint/validators/warnings/unknown_tag/messages_builder.rb
200
234
  - lib/yard/lint/validators/warnings/unknown_tag/parser.rb
201
235
  - lib/yard/lint/validators/warnings/unknown_tag/result.rb
202
236
  - lib/yard/lint/validators/warnings/unknown_tag/validator.rb
data/bin/console DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require "bundler/setup"
5
- require "yard/lint"
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- require "irb"
11
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,93 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Yard
4
- module Lint
5
- # Cache for YARD command executions to avoid running identical commands multiple times
6
- # This provides a transparent optimization layer - validators don't need to know about it
7
- class CommandCache
8
- def initialize
9
- @cache = {}
10
- @hits = 0
11
- @misses = 0
12
- end
13
-
14
- # Execute a command through the cache
15
- # If the command has been executed before, return cached result
16
- # Otherwise execute and cache the result
17
- # @param command_string [String] the shell command to execute
18
- # @return [Hash] hash with stdout, stderr, exit_code keys
19
- # @note Returns a deep clone to prevent validators from modifying cached data
20
- def execute(command_string)
21
- cache_key = generate_cache_key(command_string)
22
-
23
- if @cache.key?(cache_key)
24
- @hits += 1
25
- deep_clone(@cache[cache_key])
26
- else
27
- @misses += 1
28
- result = execute_command(command_string)
29
- @cache[cache_key] = deep_clone(result)
30
- result
31
- end
32
- end
33
-
34
- # Get cache statistics
35
- # @return [Hash] hash with hits, misses, and total executions
36
- def stats
37
- {
38
- hits: @hits,
39
- misses: @misses,
40
- total: @hits + @misses,
41
- saved_executions: @hits
42
- }
43
- end
44
-
45
- private
46
-
47
- # Generate a cache key for the command
48
- # Normalizes the command to handle whitespace differences
49
- # @param command_string [String] the command to generate key for
50
- # @return [String] SHA256 hash of normalized command
51
- def generate_cache_key(command_string)
52
- # Normalize whitespace: collapse multiple spaces/newlines into single spaces
53
- normalized = command_string.strip.gsub(/\s+/, ' ')
54
- Digest::SHA256.hexdigest(normalized)
55
- end
56
-
57
- # Actually execute the command
58
- # @param command_string [String] the command to execute
59
- # @return [Hash] hash with stdout, stderr, exit_code keys
60
- def execute_command(command_string)
61
- # Set up environment to load IRB shim before YARD (Ruby 3.5+ compatibility)
62
- env = build_environment_with_shim
63
-
64
- stdout, stderr, status = Open3.capture3(env, command_string)
65
- {
66
- stdout: stdout,
67
- stderr: stderr,
68
- exit_code: status.exitstatus
69
- }
70
- end
71
-
72
- # Build environment hash with RUBYOPT to load IRB shim
73
- # This ensures the shim is loaded in subprocesses (like yard list commands)
74
- # @return [Hash] environment variables for command execution
75
- def build_environment_with_shim
76
- shim_path = File.expand_path('ext/irb_notifier_shim.rb', __dir__)
77
- rubyopt = "-r#{shim_path}"
78
-
79
- # Preserve existing RUBYOPT if present
80
- rubyopt = "#{ENV['RUBYOPT'].strip} #{rubyopt}" if ENV['RUBYOPT']
81
-
82
- { 'RUBYOPT' => rubyopt }
83
- end
84
-
85
- # Deep clone a hash to prevent modifications to cached data
86
- # @param hash [Hash] the hash to clone
87
- # @return [Hash] deep cloned hash
88
- def deep_clone(hash)
89
- Marshal.load(Marshal.dump(hash))
90
- end
91
- end
92
- end
93
- end