Rule: completed-docs
Enforces JSDoc comments for important items be filled out.
Rationale
Helps ensure important components are documented.
Note: use this rule sparingly. It’s better to have self-documenting names on components with single, concise responsibilities. Comments that only restate the names of variables add nothing to code, and can easily become outdated.
Config
true
to enable for [classes, functions, methods, properties]
,
or an array with each item in one of two formats:
string
to enable for that typeobject
keying types to when their documentation is required:"methods"
and"properties"
may specify:"privacies"
:"all"
"private"
"protected"
"public"
"locations"
:"all"
"instance"
"static"
- Other types may specify
"visibilities"
:"all"
"exported"
"internal"
"functions"
"methods"
may also specify"overloads"
to indicate that each overload should have its own documentation, which isfalse
by default.- All types may also provide
"tags"
with members specifying tags that allow the docs to not have a body."content"
: Object mapping tags toRegExp
bodies content allowed to count as complete docs."existence"
: Array of tags that must only exist to count as complete docs.
Types that may be enabled are:
"classes"
"constructors"
"enums"
"enum-members"
"functions"
"interfaces"
"methods"
"namespaces"
"properties"
"types"
"variables"
Config examples
"completed-docs": true
"completed-docs": [true, "enums", "functions", "methods"]
"completed-docs": [ true, { "enums": true, "functions": {"visibilities": ["exported"]}, "methods": {"locations": "instance", "privacies": ["public", "protected"]}, "properties": { "tags": {"content": {"see": ["#.*"]}, "existence": ["inheritdoc"]} } } ]
Schema
{ "type": "array", "items": { "anyOf": [ { "options": [ "classes", "enums", "functions", "interfaces", "methods", "namespaces", "properties", "types", "variables" ], "type": "string" }, { "type": "object", "properties": { "classes": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" } }, "type": "object" }, "constructors": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "privacies": { "enum": [ "all", "private", "protected", "public" ], "type": "string" }, "overloads": { "type": "boolean" } }, "type": "object" }, "enums": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" } }, "type": "object" }, "enum-members": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" } }, "type": "object" }, "functions": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" }, "overloads": { "type": "boolean" } }, "type": "object" }, "interfaces": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" } }, "type": "object" }, "methods": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "locations": { "enum": [ "all", "instance", "static" ], "type": "string" }, "privacies": { "enum": [ "all", "private", "protected", "public" ], "type": "string" }, "overloads": { "type": "boolean" } }, "type": "object" }, "namespaces": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" } }, "type": "object" }, "properties": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "locations": { "enum": [ "all", "instance", "static" ], "type": "string" }, "privacies": { "enum": [ "all", "private", "protected", "public" ], "type": "string" } }, "type": "object" }, "types": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" } }, "type": "object" }, "variables": { "properties": { "tags": { "properties": { "content": { "items": { "type": "string" }, "type": "object" }, "existence": { "items": { "type": "string" }, "type": "array" } } }, "visibilities": { "enum": [ "all", "exported", "internal" ], "type": "string" } }, "type": "object" } } } ] } }