Skip to content

Commit 95df73e

Browse files
brokentonegajus
authored andcommitted
feat: set line locations when reporting violations (#88)
* Update and test checkTagNames rule error line locations * Update and test checkTypes rule error line locations * Update and test noUndefinedTypes rule error line locations * Update and test requireHyphenBeforeParamDescription rule error line locations * Update and test requireParamDescription rule error line locations * Update and test requireParamName rule error line locations * Update and test requireParamType rule error line locations * Update and test requireReturnsDescription rule error line locations * Update and test requireReturnsType * Update and test validTypes
1 parent 767a788 commit 95df73e

20 files changed

+38
-11
lines changed

src/rules/checkTagNames.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ export default iterateJsdoc(({
1111
const preferredTagName = utils.getPreferredTagName(jsdocTag.tag);
1212

1313
if (preferredTagName !== jsdocTag.tag) {
14-
report('Invalid JSDoc tag (preference). Replace "' + jsdocTag.tag + '" JSDoc tag with "' + preferredTagName + '".');
14+
report('Invalid JSDoc tag (preference). Replace "' + jsdocTag.tag + '" JSDoc tag with "' + preferredTagName + '".', null, jsdocTag);
1515
}
1616
} else {
17-
report('Invalid JSDoc tag name "' + jsdocTag.tag + '".');
17+
report('Invalid JSDoc tag name "' + jsdocTag.tag + '".', null, jsdocTag);
1818
}
1919
});
2020
});

src/rules/checkTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export default iterateJsdoc(({
8080
return fixer.replaceText(jsdocNode, sourceCode.getText(jsdocNode).replace('{' + jsdocTag.type + '}', '{' + fixedType + '}'));
8181
};
8282

83-
report('Invalid JSDoc @' + jsdocTag.tag + ' "' + jsdocTag.name + '" type "' + invalidType + '".', fix);
83+
report('Invalid JSDoc @' + jsdocTag.tag + ' "' + jsdocTag.name + '" type "' + invalidType + '".', fix, jsdocTag);
8484
});
8585
}
8686
});

src/rules/noUndefinedTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export default iterateJsdoc(({
5252
traverse(parsedType, (node) => {
5353
if (node.type === 'NAME') {
5454
if (!_.includes(definedTypes, node.name)) {
55-
report('The type \'' + node.name + '\' is undefined.');
55+
report('The type \'' + node.name + '\' is undefined.', null, tag);
5656
} else if (!_.includes(extraTypes, node.name)) {
5757
context.markVariableAsUsed(node.name);
5858
}

src/rules/requireHyphenBeforeParamDescription.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default iterateJsdoc(({
1717
const replacement = sourceCode.getText(jsdocNode).replace(jsdocTag.description, '- ' + jsdocTag.description);
1818

1919
return fixer.replaceText(jsdocNode, replacement);
20-
});
20+
}, jsdocTag);
2121
}
2222
});
2323
});

src/rules/requireParamDescription.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default iterateJsdoc(({
1414

1515
_.forEach(jsdocParameters, (jsdocParameter) => {
1616
if (!jsdocParameter.description) {
17-
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" description.');
17+
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" description.', null, jsdocParameter);
1818
}
1919
});
2020
});

src/rules/requireParamName.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default iterateJsdoc(({
1414

1515
_.forEach(jsdocParameters, (jsdocParameter) => {
1616
if (jsdocParameter.tag && jsdocParameter.name === '') {
17-
report('There must be an identifier after @param ' + (jsdocParameter.type === '' ? 'type' : 'tag') + '.');
17+
report('There must be an identifier after @param ' + (jsdocParameter.type === '' ? 'type' : 'tag') + '.', null, jsdocParameter);
1818
}
1919
});
2020
});

src/rules/requireParamType.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default iterateJsdoc(({
1414

1515
_.forEach(jsdocParameters, (jsdocParameter) => {
1616
if (!jsdocParameter.type) {
17-
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" type.');
17+
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" type.', null, jsdocParameter);
1818
}
1919
});
2020
});

src/rules/requireReturnsDescription.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default iterateJsdoc(({
1414

1515
_.forEach(jsdocTags, (jsdocTag) => {
1616
if (!jsdocTag.description) {
17-
report('Missing JSDoc @' + targetTagName + ' description.');
17+
report('Missing JSDoc @' + targetTagName + ' description.', null, jsdocTag);
1818
}
1919
});
2020
});

src/rules/requireReturnsType.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default iterateJsdoc(({
1414

1515
_.forEach(jsdocTags, (jsdocTag) => {
1616
if (!jsdocTag.type) {
17-
report('Missing JSDoc @' + targetTagName + ' type.');
17+
report('Missing JSDoc @' + targetTagName + ' type.', null, jsdocTag);
1818
}
1919
});
2020
});

src/rules/validTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default iterateJsdoc(({
1212
parse(tag.type);
1313
} catch (error) {
1414
if (error.name === 'SyntaxError') {
15-
report('Syntax error in type: ' + tag.type);
15+
report('Syntax error in type: ' + tag.type, null, tag);
1616
}
1717
}
1818
}

0 commit comments

Comments
 (0)