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:
stringto enable for that typeobjectkeying 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 isfalseby default.- All types may also provide
"tags"with members specifying tags that allow the docs to not have a body."content": Object mapping tags toRegExpbodies 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"
}
}
}
]
}
}