mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 12:19:15 +00:00
feat(linter/jsdoc): Implement require-param rule (#3554)
Part of #1170 > https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md NOTE: `config.useDefaultObjectProperties` is not implemented for now.
This commit is contained in:
parent
a939ddd096
commit
4a075cccd6
5 changed files with 1926 additions and 1 deletions
|
|
@ -18,6 +18,9 @@ extend-exclude = [
|
|||
"tasks/prettier_conformance/prettier",
|
||||
]
|
||||
|
||||
[default]
|
||||
extend-ignore-re = ["(?Rm)^.*(#|//)\\s*spellchecker:disable-line$"]
|
||||
|
||||
[default.extend-words]
|
||||
trivias = "trivias"
|
||||
trivia = "trivia"
|
||||
|
|
|
|||
|
|
@ -390,6 +390,7 @@ mod jsdoc {
|
|||
pub mod empty_tags;
|
||||
pub mod implements_on_classes;
|
||||
pub mod no_defaults;
|
||||
pub mod require_param;
|
||||
pub mod require_property;
|
||||
pub mod require_property_description;
|
||||
pub mod require_property_name;
|
||||
|
|
@ -757,6 +758,7 @@ oxc_macros::declare_all_lint_rules! {
|
|||
jsdoc::empty_tags,
|
||||
jsdoc::implements_on_classes,
|
||||
jsdoc::no_defaults,
|
||||
jsdoc::require_param,
|
||||
jsdoc::require_property,
|
||||
jsdoc::require_property_type,
|
||||
jsdoc::require_property_name,
|
||||
|
|
|
|||
1490
crates/oxc_linter/src/rules/jsdoc/require_param.rs
Normal file
1490
crates/oxc_linter/src/rules/jsdoc/require_param.rs
Normal file
File diff suppressed because it is too large
Load diff
426
crates/oxc_linter/src/snapshots/require_param.snap
Normal file
426
crates/oxc_linter/src/snapshots/require_param.snap
Normal file
|
|
@ -0,0 +1,426 @@
|
|||
---
|
||||
source: crates/oxc_linter/src/tester.rs
|
||||
expression: require_param
|
||||
---
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:34]
|
||||
4 │ */
|
||||
5 │ function quux (foo, bar, {baz}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:34]
|
||||
4 │ */
|
||||
5 │ function quux (foo, bar, {baz}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:35]
|
||||
4 │ */
|
||||
5 │ function quux ({foo: bar = 5} = {}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:31]
|
||||
4 │ */
|
||||
5 │ function quux ({ foo, bar: { baz }}) {
|
||||
· ─── ─────────────
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}, {bar}) {
|
||||
· ─── ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}, {bar}) {
|
||||
· ─── ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:30]
|
||||
4 │ */
|
||||
5 │ function quux ({foo}, {bar}) {
|
||||
· ─── ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo, bar) {
|
||||
· ─── ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:34]
|
||||
4 │ */
|
||||
5 │ function quux (foo, bar) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo, bar, baz) {
|
||||
· ─── ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:6:39]
|
||||
5 │ */
|
||||
6 │ function quux (foo, bar, baz) {
|
||||
· ───
|
||||
7 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo, bar, baz) {
|
||||
· ─── ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:26]
|
||||
4 │ */
|
||||
5 │ function quux ({bar, baz}, foo) {
|
||||
· ─── ─── ───
|
||||
6 │ }
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:25]
|
||||
4 │ */
|
||||
5 │ function quux (foo, {bar, baz}) {
|
||||
· ─── ─── ───
|
||||
6 │ }
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:26]
|
||||
4 │ */
|
||||
5 │ function quux ([bar, baz], foo) {
|
||||
· ─── ─── ───
|
||||
6 │ }
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │ }
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:8:42]
|
||||
7 │ */
|
||||
8 │ function assign (employees, name) {
|
||||
· ────
|
||||
9 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:6:40]
|
||||
5 │ */
|
||||
6 │ function quux (baz, {foo: bar}) {
|
||||
· ───
|
||||
7 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:29]
|
||||
4 │ */
|
||||
5 │ function quux (foo) {
|
||||
· ───
|
||||
6 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:8:14]
|
||||
7 │ async setData(
|
||||
8 │ data: { last_modified?: number }
|
||||
· ────────────────────────────────
|
||||
9 │ ) {}
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:6:34]
|
||||
5 │ */
|
||||
6 │ function quux ({num, ...extra}) {
|
||||
· ─────
|
||||
7 │ }
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:7:41]
|
||||
6 │ */
|
||||
7 │ function quux ({opts: {num, ...extra}}) {
|
||||
· ─────
|
||||
8 │ }
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:6:32]
|
||||
5 │ */
|
||||
6 │ function baar ([a, ...extra]) {
|
||||
· ─────
|
||||
7 │ //
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:5:31]
|
||||
4 │ */
|
||||
5 │ function baar (a, ...extra) {
|
||||
· ─────
|
||||
6 │ //
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:6:39]
|
||||
5 │ */
|
||||
6 │ const bboxToObj = function ({x, y, width, height}) {
|
||||
· ─ ─ ───── ──────
|
||||
7 │ return {x, y, width, height};
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:6:39]
|
||||
5 │ */
|
||||
6 │ const bboxToObj = function ({x, y, width, height}) {
|
||||
· ─ ─ ───── ──────
|
||||
7 │ return {x, y, width, height};
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:7:23]
|
||||
6 │ */
|
||||
7 │ fetch = ({ url, ...options }, cacheKey) => {
|
||||
· ─── ───────
|
||||
8 │ }
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:6:16]
|
||||
5 │ */
|
||||
6 │ function f(param) {
|
||||
· ─────
|
||||
7 │ return !param;
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:7:34]
|
||||
6 │ */
|
||||
7 │ function quux ({ foo: { bar } }) {}
|
||||
· ───
|
||||
8 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:7:34]
|
||||
6 │ */
|
||||
7 │ function quux ({ foo: { bar } }) {}
|
||||
· ───
|
||||
8 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:7:27]
|
||||
6 │ */
|
||||
7 │ function quux ({ foo: { bar } }) {}
|
||||
· ─────────────
|
||||
8 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:7:34]
|
||||
6 │ */
|
||||
7 │ function quux ({ foo: { bar } }) {}
|
||||
· ───
|
||||
8 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:8:39]
|
||||
7 │ */
|
||||
8 │ function foo({ foo: { bar: { baz } }}) {}
|
||||
· ───
|
||||
9 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
||||
⚠ eslint-plugin-jsdoc(require-param): Missing JSDoc `@param` declaration for function parameters.
|
||||
╭─[require_param.tsx:3:25]
|
||||
2 │ /** Foo. */
|
||||
3 │ function foo(a, b, c) {}
|
||||
· ─ ─ ─
|
||||
4 │
|
||||
╰────
|
||||
help: Add `@param` tag with name.
|
||||
|
|
@ -38,7 +38,11 @@ pub fn get_function_nearest_jsdoc_node<'a, 'b>(
|
|||
| AstKind::CallExpression(_)
|
||||
// /** This JSDoc should NOT found for `ArrowFunctionExpression` callback */
|
||||
// new Promise(() => {})
|
||||
| AstKind::NewExpression(_) => {
|
||||
| AstKind::NewExpression(_)
|
||||
// /** This JSDoc should NOT found for inner `Function` */
|
||||
// function outer() { return function inner() {} }
|
||||
| AstKind::ReturnStatement(_)
|
||||
=> {
|
||||
// /** This JSDoc should NOT found for `VariableDeclaration` */
|
||||
// export const foo = () => {}
|
||||
let parent_node = ctx.nodes().parent_node(current_node.id())?;
|
||||
|
|
|
|||
Loading…
Reference in a new issue