]> git.lizzy.rs Git - rust.git/blob - clippy_dev/README.md
Auto merge of #6735 - matthiaskrgr:lintcheck, r=flip1995
[rust.git] / clippy_dev / README.md
1 # Clippy Dev Tool 
2
3 The Clippy Dev Tool is a tool to ease Clippy development, similar to `rustc`s `x.py`.
4
5 Functionalities (incomplete):
6
7 ## `lintcheck`
8 Runs clippy on a fixed set of crates read from `clippy_dev/lintcheck_crates.toml`
9 and saves logs of the lint warnings into the repo.
10 We can then check the diff and spot new or disappearing warnings.
11
12 From the repo root, run:
13 ````
14 cargo run --target-dir clippy_dev/target --package clippy_dev \
15 --bin clippy_dev --manifest-path clippy_dev/Cargo.toml --features lintcheck -- lintcheck
16 ````
17 or
18 ````
19 cargo dev-lintcheck
20 ````
21
22 By default the logs will be saved into `lintcheck-logs/lintcheck_crates_logs.txt`.
23
24 You can set a custom sources.toml by adding `--crates-toml custom.toml` or using `LINTCHECK_TOML="custom.toml"`
25 where `custom.toml` must be a relative path from the repo root.
26
27 The results will then be saved to `lintcheck-logs/custom_logs.toml`.
28
29 ### Configuring the Crate Sources
30
31 The sources to check are saved in a `toml` file.  
32 There are three types of sources.  
33 A crates-io source:
34 ````toml
35 bitflags = {name = "bitflags", versions = ['1.2.1']}
36 ````
37 Requires a "name" and one or multiple "versions" to be checked.
38
39 A git source:
40 ````toml
41 puffin = {name = "puffin", git_url = "https://github.com/EmbarkStudios/puffin", git_hash = "02dd4a3"}
42 ````
43 Requires a name, the url to the repo and unique identifier of a commit,
44 branch or tag which is checked out before linting.  
45 There is no way to always check `HEAD` because that would lead to changing lint-results as the repo would get updated.  
46 If `git_url` or `git_hash` is missing, an error will be thrown.
47
48 A local dependency:
49 ````toml
50  clippy = {name = "clippy", path = "/home/user/clippy"}
51 ````
52 For when you want to add a repository that is not published yet.