rubocop-yard 0.8.2 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc21b6abfe7772ded3bcfc7eb7c3db68b8eff3716d15d9442520e8d367c3295f
4
- data.tar.gz: c706a4a3c2db6bbf36b22d1810f5ec06b4d7312ee7d2906ee57b8f6f41b40960
3
+ metadata.gz: 06747e91e4d94f896cb88e9fb16826b8863afb224451a97a55aedbe0e0c36517
4
+ data.tar.gz: 8f8eb7d93d78b2f23b356850e346e82f1cdf187b40fc2e17e584751a5929774a
5
5
  SHA512:
6
- metadata.gz: ed1ed3631058b5d08ee5d8fc1e90ec7edcf5a5d3d6f9ada711fa9e6719102679156a20e98881337f69cec095810f90183651b7d005c321145ed3bf0cf2e70735
7
- data.tar.gz: 5d1963992a5223efbfb696cde08c8428045d004b681ea4a53f5d8e73cd463907e491b3b3ac47aa00251b551aba13dd6232593bd4e472d7be1317cd7c3b75f77d
6
+ metadata.gz: 7a299956fd71c933d0d4aa59d68c273cd49e481b61be404f1a071b6051d8c874e18f7de1a27b1b3d59b72c6e3ee098ec554d1bb5c06e94971cc4bb04e4890555
7
+ data.tar.gz: e940c21c3172cc9ba385f16d227418006406af7c44f34a7c1da32ee53dabfa3062d7e83b2a2351671a7a68d9c4457f4672df574e5d71a1e68fcf406fa5da98e2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.9.0] - 2023-11-28
4
+
5
+ - Add `YARD/TagTypePosition`
6
+
7
+ ## [0.8.0] - 2023-11-6
8
+
9
+ - Support EnforcedStylePrototypeName
10
+
3
11
  ## [0.7.0] - 2023-10-14
4
12
 
5
13
  - New feature
data/README.md CHANGED
@@ -15,6 +15,15 @@ Check tag type syntax error.
15
15
  ^^^^^^^^^^^^^ (SyntaxError) invalid character at |
16
16
  ```
17
17
 
18
+ ### `YARD/TagTypePosition`
19
+
20
+ Notice tag type position.
21
+
22
+ ```
23
+ # @option [Integer] opts foo
24
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This docs found `[Integer]`, but parser of YARD can't found types. Please check syntax of YARD.
25
+ ```
26
+
18
27
  ### `YARD/CollectionStyle`
19
28
 
20
29
  `EnforcedStyle long (default)`
data/config/default.yml CHANGED
@@ -35,3 +35,7 @@ YARD/MismatchName:
35
35
  - before
36
36
  - after
37
37
 
38
+ YARD/TagTypePosition:
39
+ Description: 'Notice tag type position'
40
+ Enabled: true
41
+ VersionAdded: '0.9.0'
@@ -82,10 +82,6 @@ module RuboCop
82
82
  end
83
83
  end
84
84
 
85
- def inline_comment?(comment)
86
- !comment_line?(comment.source_range.source_line)
87
- end
88
-
89
85
  def include_yard_tag?(comment)
90
86
  comment.source.match?(/@(?:param|return|option|raise|yieldparam|yieldreturn)\s+.*\[.*\]/)
91
87
  end
@@ -112,10 +112,6 @@ module RuboCop
112
112
  corrector.replace(comment, comment.source.sub(/\[(.*)\]/) { "[#{styled_string(types_explainer)}]" })
113
113
  end
114
114
 
115
- def inline_comment?(comment)
116
- !comment_line?(comment.source_range.source_line)
117
- end
118
-
119
115
  def include_yard_tag?(comment)
120
116
  comment.source.match?(/@(?:param|return|option|raise|yieldparam|yieldreturn)\s+.*\[.*\]/)
121
117
  end
@@ -8,6 +8,8 @@ module RuboCop
8
8
  case tag
9
9
  when ::YARD::Tags::OptionTag
10
10
  tag.pair.types
11
+ when ::YARD::Tags::OverloadTag
12
+ tag.types
11
13
  else
12
14
  tag.types
13
15
  end
@@ -69,6 +71,10 @@ module RuboCop
69
71
  raise "#{types_explainer.class} is not supported"
70
72
  end
71
73
  end
74
+
75
+ def inline_comment?(comment)
76
+ !comment_line?(comment.source_range.source_line)
77
+ end
72
78
  end
73
79
  end
74
80
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module YARD
6
+ class TagTypePosition < Base
7
+ include YARD::Helper
8
+ include RangeHelp
9
+
10
+ def on_new_investigation
11
+ processed_source.comments.each do |comment|
12
+ next if inline_comment?(comment)
13
+ next unless include_yard_tag?(comment)
14
+ next unless include_yard_tag_type?(comment)
15
+
16
+ check(comment)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def check(comment)
23
+ docstring = comment.text.gsub(/\A#\s*/, '')
24
+ ::YARD::DocstringParser.new.parse(docstring).tags.each do |tag|
25
+ types = extract_tag_types(tag)
26
+ if types.nil?
27
+ match = comment.source.match(/(?<type>\[.+\])/)
28
+ add_offense(comment, message: "This docs found `#{match[:type]}`, but parser of YARD can't found types. Please check syntax of YARD.")
29
+ end
30
+ end
31
+ end
32
+
33
+ def include_yard_tag?(comment)
34
+ comment.source.match?(/@(?:param|return|option|raise|yieldparam|yieldreturn)\s+.*\[.*\]/)
35
+ end
36
+
37
+ def include_yard_tag_type?(comment)
38
+ comment.source.match?(/\[.+\]/)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -43,10 +43,6 @@ module RuboCop
43
43
  end
44
44
  end
45
45
 
46
- def inline_comment?(comment)
47
- !comment_line?(comment.source_range.source_line)
48
- end
49
-
50
46
  def include_yard_tag?(comment)
51
47
  comment.source.match?(/@(?:param|return|option|raise|yieldparam|yieldreturn)\s+.*\[.*\]/)
52
48
  end
@@ -7,4 +7,5 @@ require_relative 'yard/collection_style'
7
7
  require_relative 'yard/collection_type'
8
8
  require_relative 'yard/meaningless_tag'
9
9
  require_relative 'yard/mismatch_name'
10
+ require_relative 'yard/tag_type_position'
10
11
  require_relative 'yard/tag_type_syntax'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module YARD
5
- VERSION = "0.8.2"
5
+ VERSION = "0.9.0"
6
6
  end
7
7
  end
data/sig/rubocop/yard.rbs CHANGED
@@ -16,6 +16,15 @@ module RuboCop
16
16
 
17
17
  module Helper
18
18
  def extract_tag_types: (tag tag) -> Array[String]?
19
+ def inline_comment?: (::Parser::Source::Comment comment) -> bool
20
+ end
21
+
22
+ class TagTypePosition < ::RuboCop::Cop::Base
23
+ include YARD::Helper
24
+
25
+ def check: (::Parser::Source::Comment comment) -> void
26
+ def include_yard_tag?: (::Parser::Source::Comment comment) -> bool
27
+ def include_yard_tag_type?: (::Parser::Source::Comment comment) -> bool
19
28
  end
20
29
 
21
30
  class TagTypeSyntax < ::RuboCop::Cop::Base
@@ -25,7 +34,6 @@ module RuboCop
25
34
 
26
35
  def check: (::Parser::Source::Comment comment) -> void
27
36
  def check_syntax_error: (::Parser::Source::Comment comment) { () -> void } -> void
28
- def inline_comment?: (::Parser::Source::Comment comment) -> bool
29
37
  def include_yard_tag?: (::Parser::Source::Comment comment) -> bool
30
38
  def tag_range_for_comment: (::Parser::Source::Comment comment) -> untyped
31
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-yard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ksss
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-28 00:00:00.000000000 Z
11
+ date: 2023-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -57,6 +57,7 @@ files:
57
57
  - lib/rubocop/cop/yard/meaningless_tag.rb
58
58
  - lib/rubocop/cop/yard/mismatch_name.rb
59
59
  - lib/rubocop/cop/yard/patch.rb
60
+ - lib/rubocop/cop/yard/tag_type_position.rb
60
61
  - lib/rubocop/cop/yard/tag_type_syntax.rb
61
62
  - lib/rubocop/cop/yard_cops.rb
62
63
  - lib/rubocop/yard.rb