Blame view
node_modules/eslint/lib/rules/require-jsdoc.js
2.48 KB
c39994410
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
/** * @fileoverview Rule to check for jsdoc presence. * @author Gyandeep Singh * @copyright 2015 Gyandeep Singh. All rights reserved. */ "use strict"; var assign = require("object-assign"); module.exports = function(context) { var source = context.getSourceCode(); var DEFAULT_OPTIONS = { "FunctionDeclaration": true, "MethodDefinition": false, "ClassDeclaration": false }; var options = assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require || {}); /** * Report the error message * @param {ASTNode} node node to report * @returns {void} */ function report(node) { context.report(node, "Missing JSDoc comment."); } /** * Check if the jsdoc comment is present for class methods * @param {ASTNode} node node to examine * @returns {void} */ function checkClassMethodJsDoc(node) { if (node.parent.type === "MethodDefinition") { var jsdocComment = source.getJSDocComment(node); if (!jsdocComment) { report(node); } } } /** * Check if the jsdoc comment is present or not. * @param {ASTNode} node node to examine * @returns {void} */ function checkJsDoc(node) { var jsdocComment = source.getJSDocComment(node); if (!jsdocComment) { report(node); } } return { "FunctionDeclaration": function(node) { if (options.FunctionDeclaration) { checkJsDoc(node); } }, "FunctionExpression": function(node) { if (options.MethodDefinition) { checkClassMethodJsDoc(node); } }, "ClassDeclaration": function(node) { if (options.ClassDeclaration) { checkJsDoc(node); } } }; }; module.exports.schema = [ { "type": "object", "properties": { "require": { "type": "object", "properties": { "ClassDeclaration": { "type": "boolean" }, "MethodDefinition": { "type": "boolean" }, "FunctionDeclaration": { "type": "boolean" } }, "additionalProperties": false } }, "additionalProperties": false } ]; |