1
1
import _ from 'lodash' ;
2
2
import iterateJsdoc from '../iterateJsdoc' ;
3
3
4
- const validateParameterNames = ( targetTagName : string , functionParameterNames : Array < string > , jsdocParameterNames : Array< string > , report : Function) => {
5
- return _ . some ( jsdocParameterNames , ( jsdocParameterName , index ) => {
4
+ const validateParameterNames = ( targetTagName : string , functionParameterNames : Array < string > , jsdoc, report) => {
5
+ if ( ! jsdoc || ! jsdoc . tags ) {
6
+ return false ;
7
+ }
8
+
9
+ const paramTags = jsdoc.tags.filter((tag) => {
10
+ return tag . tag === targetTagName && ! tag . name . includes ( '.' ) ;
11
+ } );
12
+
13
+ return _.some(paramTags, (tag, index) => {
6
14
const functionParameterName = functionParameterNames [ index ] ;
7
15
8
16
if ( ! functionParameterName ) {
9
- report ( '@' + targetTagName + ' "' + jsdocParameterName + '" does not match an existing function parameter.' ) ;
17
+ report (
18
+ `@${ targetTagName } "${ tag . name } " does not match an existing function parameter.` ,
19
+ null,
20
+ tag
21
+ ) ;
10
22
11
23
return true ;
12
24
}
@@ -15,8 +27,17 @@ const validateParameterNames = (targetTagName : string, functionParameterNames :
15
27
return false ;
16
28
}
17
29
18
- if ( functionParameterName !== jsdocParameterName ) {
19
- report ( 'Expected @' + targetTagName + ' names to be "' + functionParameterNames . join ( ', ' ) + '". Got "' + jsdocParameterNames . join ( ', ' ) + '".' ) ;
30
+ if ( functionParameterName !== tag . name ) {
31
+ const expectedNames = functionParameterNames . join ( ', ' ) ;
32
+ const actualNames = paramTags . map ( ( { name} ) => {
33
+ return name ;
34
+ } ) . join ( ', ' ) ;
35
+
36
+ report (
37
+ `Expected @${ targetTagName } names to be "${ expectedNames } ". Got "${ actualNames } ".` ,
38
+ null ,
39
+ tag
40
+ ) ;
20
41
21
42
return true ;
22
43
}
@@ -59,14 +80,14 @@ const validateParameterNamesDeep = (targetTagName : string, jsdocParameterNames
59
80
} ;
60
81
61
82
export default iterateJsdoc(({
83
+ jsdoc ,
62
84
report ,
63
85
utils
64
86
} ) => {
65
87
const functionParameterNames = utils . getFunctionParameterNames ( ) ;
66
- const jsdocParameterNames = utils . getJsdocParameterNames ( ) ;
67
88
const jsdocParameterNamesDeep = utils . getJsdocParameterNamesDeep ( ) ;
68
89
const targetTagName = utils . getPreferredTagName ( 'param' ) ;
69
- const isError = validateParameterNames ( targetTagName , functionParameterNames , jsdocParameterNames , report ) ;
90
+ const isError = validateParameterNames ( targetTagName , functionParameterNames , jsdoc , report ) ;
70
91
71
92
if ( isError ) {
72
93
return;
0 commit comments