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
每月下载量 18,791 次
被 12 个 包使用(11 个直接使用)
1.5MB
43K SLoC
deno_lint
一个用于编写快速 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-unmangle或rustfilt代替c++filt。
这些命令可能需要几分钟才能运行。
贡献
-
如果您将要处理一个问题,请在开始工作之前在问题评论中提及。
-
请在论坛中保持专业。我们遵循Rust的行为准则(CoC)。有问题?请发送电子邮件至[email protected]。
-
在社区聊天室中寻求帮助。
提交拉取请求
在提交之前,请确保以下工作已完成:
- 存在相关的问题,并且在PR文本中引用了它。
- 有测试覆盖了这些更改。
- 确保
cargo test
通过。 - 使用
deno run --allow-run tools/format.ts
格式化您的代码。 - 确保
deno run --allow-run --allow-env tools/lint.ts
通过。 - 如果您添加了新的规则
- 运行
cargo build --example dlint --all-features
- 通过运行生成的二进制文件并使用以下参数更新文档:
./target/debug/examples/dlint rules --json > www/static/docs.json
- 运行
依赖关系
~18–27MB
~483K SLoC