124 个版本 (62 个重大更改)

新版本 0.63.1 2024 年 8 月 15 日
0.62.0 2024 年 7 月 31 日
0.58.0 2024 年 3 月 21 日
0.52.2 2023 年 10 月 24 日
0.1.20 2020 年 7 月 31 日

开发工具 中排名第 37

Download history 5220/week @ 2024-04-25 4134/week @ 2024-05-02 3302/week @ 2024-05-09 11668/week @ 2024-05-16 11247/week @ 2024-05-23 5190/week @ 2024-05-30 11057/week @ 2024-06-06 6992/week @ 2024-06-13 6990/week @ 2024-06-20 8942/week @ 2024-06-27 5816/week @ 2024-07-04 3105/week @ 2024-07-11 3837/week @ 2024-07-18 3650/week @ 2024-07-25 3996/week @ 2024-08-01 7101/week @ 2024-08-08

每月下载量 18,791
12 包使用(11 个直接使用)

MIT 许可证

1.5MB
43K SLoC

deno_lint

Discord Chat

一个用于编写快速 JavaScript 和 TypeScript 代码检查工具的 Rust 包。

此包为 deno lint 提供支持,但不仅限于 Deno,也可以用于编写 Node 的代码检查工具。

支持 ESLint 的推荐规则集,无需配置即可使用 recommended@typescript-eslint

查看 路线图


支持的规则

访问 https://lint.deno.land 查看可用规则列表。

性能

速度极快,参见与 ESLint 的比较

[
  {
    "name": "deno_lint",
    "totalMs": 105.3750100000002,
    "runsCount": 5,
    "measuredRunsAvgMs": 21.07500200000004,
    "measuredRunsMs": [
      24.79783199999997,
      19.563640000000078,
      20.759051999999883,
      19.99068000000011,
      20.26380600000016
    ]
  },
  {
    "name": "eslint",
    "totalMs": 11845.073306000002,
    "runsCount": 5,
    "measuredRunsAvgMs": 2369.0146612000003,
    "measuredRunsMs": [
      2686.1039550000005,
      2281.501061,
      2298.6185210000003,
      2279.5962849999996,
      2299.2534840000008
    ]
  }
]

基准测试在 Ubuntu 上运行,使用相同的规则集进行测试。测试对象是包含大约 50 个文件的 oak 服务器。更多信息请参阅 ./benchmarks/ 目录。

Node.js 绑定

如果您想在Node中使用deno_lint,请参考@node-rs/deno-lint包,该包提供了程序化API以及deno_lint的Webpack加载器。

示例

examples/dlint/main.rs提供了一个最小化的独立二进制文件,展示了如何将deno_lint用作crate。

# Build standalone binary
$ cargo build --example dlint --features="docs"

$ ./target/debug/examples/dlint --help

dlint

USAGE:
    dlint <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    help     Prints this message or the help of the given subcommand(s)
    rules
    run

$ ./target/debug/examples/dlint run ../deno/std/http/server.ts ../deno/std/http/file_server.ts
(no-empty) Empty block statement
  --> ../deno/std/http/server.ts:93:14
   |
93 |       } catch {}
   |               ^^
   |
(no-empty) Empty block statement
   --> ../deno/std/http/server.ts:111:44
    |
111 |     while ((await body.read(buf)) !== null) {}
    |                                             ^^
    |
(no-empty) Empty block statement
   --> ../deno/std/http/server.ts:120:41
    |
120 |   constructor(public listener: Listener) {}
    |                                          ^^
    |
(ban-untagged-todo) TODO should be tagged with (@username) or (#issue)
 --> ../deno/std/http/file_server.ts:5:0
  |
5 | // TODO Stream responses instead of reading them into memory.
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
(ban-untagged-todo) TODO should be tagged with (@username) or (#issue)
 --> ../deno/std/http/file_server.ts:6:0
  |
6 | // TODO Add tests like these:
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
(ban-untagged-todo) TODO should be tagged with (@username) or (#issue)
   --> ../deno/std/http/file_server.ts:137:0
    |
137 | // TODO: simplify this after deno.stat and deno.readDir are fixed
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
(no-empty) Empty block statement
   --> ../deno/std/http/file_server.ts:155:16
    |
155 |     } catch (e) {}
    |                 ^^
    |
Found 7 problems

更多具体实现请访问deno

开发

请确保已安装最新稳定的Rust版本(1.56.0)。

// check version
$ rustc --version
rustc 1.56.0 (09c42c458 2021-10-18)

// build all targets
$ cargo build --all-targets

// test it
$ cargo test

生成火焰图(Linux)

先决条件

$ RUSTFLAGS='-g' cargo build --release --all-targets # build target
$ sudo perf record --call-graph dwarf ./target/release/examples/dlint benchmarks/oak/**.ts # create performance profile
$ perf script | stackcollapse-perf | c++filt | flamegraph > flame.svg # generate flamegraph

您可以使用rust-unmanglerustfilt代替c++filt。

这些命令可能需要几分钟才能运行。

贡献

提交拉取请求

在提交之前,请确保以下工作已完成:

  1. 存在相关的问题,并且在PR文本中引用了它。
  2. 有测试覆盖了这些更改。
  3. 确保cargo test通过。
  4. 使用deno run --allow-run tools/format.ts格式化您的代码。
  5. 确保deno run --allow-run --allow-env tools/lint.ts通过。
  6. 如果您添加了新的规则
    1. 运行cargo build --example dlint --all-features
    2. 通过运行生成的二进制文件并使用以下参数更新文档:./target/debug/examples/dlint rules --json > www/static/docs.json

依赖关系

~18–27MB
~483K SLoC