Crates.io | deno_lint |
lib.rs | deno_lint |
version | 0.60.1 |
source | src |
created_at | 2020-06-02 19:37:36.039163 |
updated_at | 2024-07-09 19:21:27.643074 |
description | lint for deno |
homepage | |
repository | https://github.com/denoland/deno_lint |
max_upload_size | |
id | 249382 |
size | 1,579,906 |
deno_lint
A Rust crate for writing fast JavaScript and TypeScript linters.
This crate powers deno lint
, but is
not Deno specific and can be used to write linters for Node as well.
Supports recommended
set of rules from ESLint and @typescript-eslint
out of
the box with no config.
See the roadmap
Visit https://lint.deno.land for the list of available rules.
Blazing fast, see comparison with 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
]
}
]
Benchmarks are run during CI on Ubuntu, using the same set of rules for both
linters. Test subject is oak
server
consisting of about 50 files. See ./benchmarks/
directory for
more info.
If you want to use deno_lint
with Node, please refer to
@node-rs/deno-lint
package
which provides programmatic API as well as Webpack loader for deno_lint
.
examples/dlint/main.rs
provides a minimal standalone binary demonstrating how
deno_lint
can be used as a 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
For more concrete implementation visit
deno
Make sure to have latest stable version of Rust installed (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
Prerequisites:
perf
,
stackcollapse-perf
,
c++filt
and
flamegraph
$ 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
You can use rust-unmangle or rustfilt instead of c++filt.
These commands can take a few minutes to run.
If you are going to work on an issue, mention so in the issue comments before you start working on the issue.
Please be professional in the forums. We follow Rust's code of conduct (CoC) Have a problem? Email ry@tinyclouds.org.
Ask for help in the community chat room.
Before submitting, please make sure the following is done:
cargo test
passes.deno run --allow-run tools/format.ts
deno run --allow-run --allow-env tools/lint.ts
passes.cargo build --example dlint --all-features
./target/debug/examples/dlint rules --json > www/static/docs.json