ESLint Plugin JSDoc provides 57 comprehensive linting rules for validating all aspects of JSDoc comments, from syntax and formatting to semantic correctness and completeness.
Rules for validating access modifiers and implementation relationships.
// Check access tags are valid
"jsdoc/check-access": ESLintRuleConfig;
// Ensure @implements is used on classes only
"jsdoc/implements-on-classes": ESLintRuleConfig;Rules for enforcing consistent JSDoc comment formatting and alignment.
// Validate JSDoc comment alignment
"jsdoc/check-alignment": ESLintRuleConfig;
// Check line alignment in JSDoc blocks
"jsdoc/check-line-alignment": ESLintRuleConfig;
// Enforce multiline JSDoc format
"jsdoc/multiline-blocks": ESLintRuleConfig;
// Prevent multiple asterisks in JSDoc
"jsdoc/no-multi-asterisks": ESLintRuleConfig;
// Require asterisk prefix on JSDoc lines
"jsdoc/require-asterisk-prefix": ESLintRuleConfig;
// Control empty lines around JSDoc tags
"jsdoc/tag-lines": ESLintRuleConfig;
// Control lines before JSDoc blocks
"jsdoc/lines-before-block": ESLintRuleConfig;
// Validate JSDoc indentation
"jsdoc/check-indentation": ESLintRuleConfig;Rules for validating JSDoc content quality and completeness.
// Validate JSDoc @example code syntax
"jsdoc/check-examples": ESLintRuleConfig;
// Validate JSDoc syntax
"jsdoc/check-syntax": ESLintRuleConfig;
// Validate tag values
"jsdoc/check-values": ESLintRuleConfig;
// Convert comments to JSDoc format
"jsdoc/convert-to-jsdoc-comments": ESLintRuleConfig;
// Validate empty JSDoc tags
"jsdoc/empty-tags": ESLintRuleConfig;
// Ensure informative documentation
"jsdoc/informative-docs": ESLintRuleConfig;
// Validate description patterns
"jsdoc/match-description": ESLintRuleConfig;
// Validate name patterns
"jsdoc/match-name": ESLintRuleConfig;
// Prevent malformed JSDoc blocks
"jsdoc/no-bad-blocks": ESLintRuleConfig;
// Prevent blank descriptions
"jsdoc/no-blank-block-descriptions": ESLintRuleConfig;
// Prevent completely blank JSDoc blocks
"jsdoc/no-blank-blocks": ESLintRuleConfig;
// Require descriptions
"jsdoc/require-description": ESLintRuleConfig;
// Enforce complete sentences in descriptions
"jsdoc/require-description-complete-sentence": ESLintRuleConfig;
// Require file-level JSDoc
"jsdoc/require-file-overview": ESLintRuleConfig;
// Handle text escaping in JSDoc
"jsdoc/text-escaping": ESLintRuleConfig;Rules for validating import relationships and syntax dependencies.
// Validate import dependencies
"jsdoc/imports-as-dependencies": ESLintRuleConfig;
// Check for missing syntax
"jsdoc/no-missing-syntax": ESLintRuleConfig;
// Restrict specific syntax patterns
"jsdoc/no-restricted-syntax": ESLintRuleConfig;Rules for validating function parameters and object properties in JSDoc.
// Validate parameter names in JSDoc
"jsdoc/check-param-names": ESLintRuleConfig;
// Validate property names
"jsdoc/check-property-names": ESLintRuleConfig;
// Require @param tags
"jsdoc/require-param": ESLintRuleConfig;
// Require parameter descriptions
"jsdoc/require-param-description": ESLintRuleConfig;
// Require parameter names
"jsdoc/require-param-name": ESLintRuleConfig;
// Require parameter types
"jsdoc/require-param-type": ESLintRuleConfig;
// Require @property tags
"jsdoc/require-property": ESLintRuleConfig;
// Require property descriptions
"jsdoc/require-property-description": ESLintRuleConfig;
// Require property names
"jsdoc/require-property-name": ESLintRuleConfig;
// Require property types
"jsdoc/require-property-type": ESLintRuleConfig;
// Control hyphens in param descriptions
"jsdoc/require-hyphen-before-param-description": ESLintRuleConfig;Rules for validating function return documentation.
// Require @returns tags
"jsdoc/require-returns": ESLintRuleConfig;
// Validate return statements match @returns
"jsdoc/require-returns-check": ESLintRuleConfig;
// Require return descriptions
"jsdoc/require-returns-description": ESLintRuleConfig;
// Require return types
"jsdoc/require-returns-type": ESLintRuleConfig;Rules for managing and validating JSDoc tags.
// Validate JSDoc tag names
"jsdoc/check-tag-names": ESLintRuleConfig;
// Validate template names
"jsdoc/check-template-names": ESLintRuleConfig;
// Require @template tags
"jsdoc/require-template": ESLintRuleConfig;
// Sort JSDoc tags
"jsdoc/sort-tags": ESLintRuleConfig;Rules for validating JSDoc type annotations and type system integration.
// Validate JSDoc types
"jsdoc/check-types": ESLintRuleConfig;
// Prevent default values in certain contexts
"jsdoc/no-defaults": ESLintRuleConfig;
// Prevent type annotations (for TypeScript)
"jsdoc/no-types": ESLintRuleConfig;
// Prevent undefined types
"jsdoc/no-undefined-types": ESLintRuleConfig;
// Validate type syntax
"jsdoc/valid-types": ESLintRuleConfig;Rules for documenting generator functions and yield statements.
// Require @yields for generators
"jsdoc/require-yields": ESLintRuleConfig;
// Validate yield statements match @yields
"jsdoc/require-yields-check": ESLintRuleConfig;Additional rules for comprehensive JSDoc validation.
// Require @example tags
"jsdoc/require-example": ESLintRuleConfig;
// Require JSDoc comments
"jsdoc/require-jsdoc": ESLintRuleConfig;
// Require @throws tags
"jsdoc/require-throws": ESLintRuleConfig;All rules support standard ESLint configuration patterns:
Usage Examples:
// Basic configuration
{
"rules": {
"jsdoc/require-jsdoc": "error",
"jsdoc/require-param": "warn",
"jsdoc/check-alignment": "off"
}
}
// Configuration with options
{
"rules": {
"jsdoc/require-jsdoc": ["error", {
"require": {
"FunctionDeclaration": true,
"MethodDefinition": true,
"ClassDeclaration": true
}
}],
"jsdoc/check-tag-names": ["error", {
"typed": true
}]
}
}type ESLintRuleConfig = "off" | "warn" | "error" |
["off" | "warn" | "error", RuleOptions];
interface RuleOptions {
[optionName: string]: any;
}
interface ESLintRule {
meta: {
type: "problem" | "suggestion" | "layout";
docs: {
description: string;
category: string;
recommended: boolean;
url?: string;
};
fixable?: "code" | "whitespace";
schema: JSONSchema7 | JSONSchema7[];
messages?: { [messageId: string]: string };
};
create(context: ESLintRuleContext): ESLintVisitors;
}