.. | ||
src | ||
Cargo.toml | ||
lintcheck_crates.toml | ||
README.md |
Clippy Dev Tool
The Clippy Dev Tool is a tool to ease Clippy development, similar to rustc
s
x.py
.
Functionalities (incomplete):
lintcheck
Runs clippy on a fixed set of crates read from
clippy_dev/lintcheck_crates.toml
and saves logs of the lint warnings into the
repo. We can then check the diff and spot new or disappearing warnings.
From the repo root, run:
cargo run --target-dir clippy_dev/target --package clippy_dev \
--bin clippy_dev --manifest-path clippy_dev/Cargo.toml --features lintcheck -- lintcheck
or
cargo dev-lintcheck
By default the logs will be saved into
lintcheck-logs/lintcheck_crates_logs.txt
.
You can set a custom sources.toml by adding --crates-toml custom.toml
or using
LINTCHECK_TOML="custom.toml"
where custom.toml
must be a relative path from
the repo root.
The results will then be saved to lintcheck-logs/custom_logs.toml
.
Configuring the Crate Sources
The sources to check are saved in a toml
file. There are three types of
sources.
-
Crates-io Source
bitflags = {name = "bitflags", versions = ['1.2.1']}
Requires a "name" and one or multiple "versions" to be checked.
-
git
Sourcepuffin = {name = "puffin", git_url = "https://github.com/EmbarkStudios/puffin", git_hash = "02dd4a3"}
Requires a name, the url to the repo and unique identifier of a commit, branch or tag which is checked out before linting. There is no way to always check
HEAD
because that would lead to changing lint-results as the repo would get updated. Ifgit_url
orgit_hash
is missing, an error will be thrown. -
Local Dependency
clippy = {name = "clippy", path = "/home/user/clippy"}
For when you want to add a repository that is not published yet.
Command Line Options (optional)
bitflags = {name = "bitflags", versions = ['1.2.1'], options = ['-Wclippy::pedantic', '-Wclippy::cargo']}
It is possible to specify command line options for each crate. This makes it
possible to only check a crate for certain lint groups. If no options are
specified, the lint groups clippy::all
, clippy::pedantic
, and
clippy::cargo
are checked. If an empty array is specified only clippy::all
is checked.