switch (tag.title.toLowerCase()) { if (!tag.type) { context.report({ node: jsdocNode, message: "Missing JSDoc parameter type for '{{name}}'.", data: { name: tag.name } }); if (!tag.description && requireParamDescription) { context.report({ node: jsdocNode, message: "Missing JSDoc parameter description for '{{name}}'.", data: { name: tag.name } }); if (params[tag.name]) { context.report({ node: jsdocNode, message: "Duplicate JSDoc parameter '{{name}}'.", data: { name: tag.name } }); } else if (tag.name.indexOf(".") === -1) { params[tag.name] = 1; if (!requireReturn && !functionData.returnPresent && (tag.type === null || !isValidReturnType(tag)) && !isAbstract) { context.report({ node: jsdocNode, message: "Unexpected @{{title}} tag; function has no return statement.", data: { title: tag.title if (requireReturnType && !tag.type) { context.report({ node: jsdocNode, message: "Missing JSDoc return type." }); if (!isValidReturnType(tag) && !tag.description && requireReturnDescription) { context.report({ node: jsdocNode, message: "Missing JSDoc return description." }); if (prefer.hasOwnProperty(tag.title) && tag.title !== prefer[tag.title]) { context.report({ node: jsdocNode, message: "Use @{{name}} instead.", data: { name: prefer[tag.title] } });