Auto-enable all Clippy lints that are not in nursery but a blacklistpull/615/head
parent
024bc7b8e8
commit
f10e5a40a3
@ -0,0 +1,82 @@ |
|||||||
|
import json |
||||||
|
from urllib.request import urlopen |
||||||
|
|
||||||
|
MSRV = "1.70.0" |
||||||
|
DEFAULT_BUILD_FLAGS = { |
||||||
|
"-Wtrivial-casts", |
||||||
|
"-Wtrivial-numeric-casts", |
||||||
|
"-Wunsafe-code", |
||||||
|
"-Wunused-lifetimes", |
||||||
|
"-Wunused-qualifications", |
||||||
|
} |
||||||
|
FLAGS_BLACKLIST = { |
||||||
|
"-Wclippy::alloc-instead-of-core", |
||||||
|
"-Wclippy::arithmetic-side-effects", # TODO: might be nice |
||||||
|
"-Wclippy::as-conversions", |
||||||
|
"-Wclippy::cargo-common-metadata", # TODO: might be nice |
||||||
|
"-Wclippy::doc-markdown", # Too many false positives |
||||||
|
"-Wclippy::default-numeric-fallback", |
||||||
|
"-Wclippy::else-if-without-else", |
||||||
|
"-Wclippy::exhaustive-enums", |
||||||
|
"-Wclippy::exhaustive-structs", |
||||||
|
"-Wclippy::float-arithmetic", |
||||||
|
"-Wclippy::float-cmp", |
||||||
|
"-Wclippy::float-cmp-const", |
||||||
|
"-Wclippy::impl-trait-in-params", |
||||||
|
"-Wclippy::implicit-return", |
||||||
|
"-Wclippy::indexing-slicing", |
||||||
|
"-Wclippy::integer-arithmetic", |
||||||
|
"-Wclippy::integer-division", |
||||||
|
"-Wclippy::map-err-ignore", |
||||||
|
"-Wclippy::missing-docs-in-private-items", |
||||||
|
"-Wclippy::missing-errors-doc", |
||||||
|
"-Wclippy::missing-inline-in-public-items", |
||||||
|
"-Wclippy::missing-panics-doc", |
||||||
|
"-Wclippy::missing-trait-methods", |
||||||
|
"-Wclippy::mixed-read-write-in-expression", |
||||||
|
"-Wclippy::mod-module-files", |
||||||
|
"-Wclippy::module-name-repetitions", |
||||||
|
"-Wclippy::modulo-arithmetic", |
||||||
|
"-Wclippy::multiple-crate-versions", |
||||||
|
"-Wclippy::multiple-unsafe-ops-per-block", |
||||||
|
"-Wclippy::must-use-candidate", # TODO: might be nice |
||||||
|
"-Wclippy::option-option", |
||||||
|
"-Wclippy::pattern-type-mismatch", |
||||||
|
"-Wclippy::pub-use", |
||||||
|
"-Wclippy::question-mark-used", |
||||||
|
"-Wclippy::self-named-module-files", # TODO: might be nice |
||||||
|
"-Wclippy::semicolon-if-nothing-returned", # TODO: might be nice |
||||||
|
"-Wclippy::semicolon-outside-block", |
||||||
|
"-Wclippy::similar-names", |
||||||
|
"-Wclippy::single-char-lifetime-names", |
||||||
|
"-Wclippy::std-instead-of-alloc", |
||||||
|
"-Wclippy::std-instead-of-core", |
||||||
|
"-Wclippy::shadow-reuse", |
||||||
|
"-Wclippy::shadow-unrelated", |
||||||
|
"-Wclippy::string-slice", # TODO: might be nice |
||||||
|
"-Wclippy::too-many-lines", |
||||||
|
"-Wclippy::separated-literal-suffix", |
||||||
|
"-Wclippy::unreachable", # TODO: might be nice |
||||||
|
"-Wclippy::unwrap-used", # TODO: might be nice to use expect instead |
||||||
|
"-Wclippy::wildcard-enum-match-arm", # TODO: might be nice |
||||||
|
"-Wclippy::wildcard-imports", # TODO: might be nice |
||||||
|
} |
||||||
|
|
||||||
|
build_flags = set(DEFAULT_BUILD_FLAGS) |
||||||
|
with urlopen(f"https://rust-lang.github.io/rust-clippy/rust-{MSRV}/lints.json") as response: |
||||||
|
for lint in json.load(response): |
||||||
|
if lint["level"] == "allow" and lint["group"] != "nursery": |
||||||
|
build_flags.add(f"-Wclippy::{lint['id'].replace('_', '-')}") |
||||||
|
|
||||||
|
for flag in FLAGS_BLACKLIST: |
||||||
|
if flag in build_flags: |
||||||
|
build_flags.remove(flag) |
||||||
|
else: |
||||||
|
print(f"Unused blacklisted flag: {flag}") |
||||||
|
|
||||||
|
with open("./config.toml", "wt") as fp: |
||||||
|
fp.write("[build]\n") |
||||||
|
fp.write("rustflags = [\n") |
||||||
|
for flag in sorted(build_flags): |
||||||
|
fp.write(f" \"{flag}\",\n") |
||||||
|
fp.write("]\n") |
Loading…
Reference in new issue