rubocop-yard 0.8.2 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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