Skip to content

Commit 14f378d

Browse files
Robin Kellergajus
authored andcommitted
feat: support @inheritdoc in the require-param rule (#24)
* Support @inheritdoc in the require-param rule * Add test for inheritdoc support in require-param
1 parent 1339f8e commit 14f378d

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

src/iterateJsdoc.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ const curryUtils = (functionNode, jsdoc, tagNamePreference) => {
2424
utils.isValidTag = (name) => {
2525
return jsdocUtils.isValidTag(name);
2626
};
27+
28+
utils.hasTag = (name) => {
29+
return jsdocUtils.hasTag(jsdoc, name);
30+
};
2731

2832
return utils;
2933
};

src/jsdocUtils.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,18 @@ const isValidTag = (name : string) : boolean => {
7272
return _.includes(validTagNames, name);
7373
};
7474

75+
const hasTag = (jsdoc : Object, targetTagName : string) : boolean => {
76+
const targetTagLower = targetTagName.toLowerCase();
77+
return _.some(jsdoc.tags, (doc : Object) => {
78+
return doc.tag.toLowerCase() == targetTagLower;
79+
});
80+
};
81+
7582
export default {
7683
getFunctionParameterNames,
7784
getJsdocParameterNames,
7885
getJsdocParameterNamesDeep,
7986
getPreferredTagName,
80-
isValidTag
87+
isValidTag,
88+
hasTag
8189
};

src/rules/requireParam.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ export default iterateJsdoc(({
88
const functionParameterNames = utils.getFunctionParameterNames();
99
const jsdocParameterNames = utils.getJsdocParameterNames();
1010

11+
// inheritdoc implies that all documentation is inherited; see http://usejsdoc.org/tags-inheritdoc.html
12+
if (utils.hasTag('inheritdoc')) {
13+
return;
14+
}
15+
1116
_.some(functionParameterNames, (functionParameterName, index) => {
1217
const jsdocParameterName = jsdocParameterNames[index];
1318

tests/rules/assertions/requireParam.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@ export default {
6666
}
6767
`
6868
},
69+
{
70+
code: `
71+
/**
72+
* @inheritdoc
73+
*/
74+
function quux (foo) {
75+
76+
}
77+
`
78+
},
6979
{
7080
code: `
7181
/**

0 commit comments

Comments
 (0)