From 3a6b7f11ce15953e509926eacf85102b04727d09 Mon Sep 17 00:00:00 2001 From: Dennis Kempin Date: Fri, 12 Nov 2021 09:35:42 -0800 Subject: [PATCH] tools/clippy: Move allow-list to .cargo/config.toml This applies the same clippy config to rust_analyzer as well. BUG=b:193893457 TEST=./tools/clippy and VSCode show the same linter results Change-Id: I5deec4a24d71fec4692ed708664130f46c1311b0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3278773 Reviewed-by: Daniel Verkamp Tested-by: kokoro Commit-Queue: Dennis Kempin --- .cargo/config.toml | 46 ++++++++++++++++++++++++++++++++++++++++ tools/clippy | 53 ++++++++-------------------------------------- 2 files changed, 55 insertions(+), 44 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000000..cc70472be1 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,46 @@ +# Disable clippy lints project-wide. +# This allows ./tools/clippy and IDE integrations to use the same configuration. +# This should be replaced with a proper clippy config once available: +# https://github.com/rust-lang/cargo/issues/5034 +[target.'cfg(all())'] +rustflags = [ + # TODO(b/181763000): Fail builds on warnings + # "-Dwarnings", + + # TODO(crbug/908640): To be resolved. + "-Aclippy::collapsible_if", # 4 errors + "-Aclippy::comparison_chain", # 1 errors + "-Aclippy::missing_safety_doc", # 26 errors + "-Aclippy::wrong_self_convention", # 8 errors + "-Aclippy::upper_case_acronyms", # 1 errors + "-Aclippy::from_over_into", # 1 errors + "-Aclippy::let-and-return", # 1 errors + + # False positives affecting WlVfd @ `devices/src/virtio/wl.rs`. + # Bug: https://github.com/rust-lang/rust-clippy/issues/6312 + "-Aclippy::field_reassign_with_default", + + # We don't care about these lints. Okay to remain suppressed globally. + "-Aclippy::cast_lossless", + "-Aclippy::cognitive_complexity", + "-Aclippy::enum_variant_names", + "-Aclippy::identity_op", + "-Aclippy::len_without_is_empty", + "-Aclippy::len_zero", + "-Aclippy::match_bool", + "-Aclippy::match_wild_err_arm", + "-Aclippy::module_inception", + "-Aclippy::needless_bool", + "-Aclippy::new_without_default", + "-Aclippy::or_fun_call", + "-Aclippy::should_implement_trait", + "-Aclippy::single_char_pattern", + "-Aclippy::too_many_arguments", + "-Aclippy::trivially_copy_pass_by_ref", + "-Aclippy::type_complexity", + "-Aclippy::unreadable_literal", + "-Aclippy::useless_let_if_seq", + "-Aclippy::useless_transmute", + "-Aclippy::new-ret-no-self", + "-Aclippy::result-unit-err", +] diff --git a/tools/clippy b/tools/clippy index d10de24da2..6b7408bbee 100755 --- a/tools/clippy +++ b/tools/clippy @@ -3,48 +3,15 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# To check for violations: +# $ ./tools/clippy +# +# To fix violations where possible: +# $ ./tools/clippy --fix + set -e cd "$(dirname $0)/.." -SUPPRESS=( - # TODO(crbug/908640): To be resolved. - collapsible_if # 4 errors - comparison_chain # 1 error - missing_safety_doc # 30 errors - wrong_self_convention # 8 errors - upper_case_acronyms # 1 errors - from_over_into # 1 error - let-and-return # 1 error - - # False positives affecting WlVfd @ `devices/src/virtio/wl.rs`. - # Bug: https://github.com/rust-lang/rust-clippy/issues/6312 - field_reassign_with_default - - # We don't care about these lints. Okay to remain suppressed globally. - cast_lossless - cognitive_complexity - enum_variant_names - identity_op - len_without_is_empty - len_zero - match_bool - match_wild_err_arm - module_inception - needless_bool - new_without_default - or_fun_call - should_implement_trait - single_char_pattern - too_many_arguments - trivially_copy_pass_by_ref - type_complexity - unreadable_literal - useless_let_if_seq - useless_transmute - new-ret-no-self - result-unit-err -) - # TODO(b/192373803): Clean up clippy error is the following crates EXCLUDE=( aarch64 # 16 errors @@ -68,7 +35,6 @@ EXCLUDE=( virtio_sys # 9 errors vm_memory # 9 errors x86_64 # 56 errors - ) EXCLUDE_COMMON=( @@ -79,21 +45,20 @@ EXCLUDE_COMMON=( common/sys_util # 2 errors ) -CLIPPY_ARGS="-- ${SUPPRESS[@]/#/-Aclippy::} -D warnings $@" - +# Note: Clippy checks are configured in .cargo/config.toml echo "Clippy crosvm workspace" cargo clippy \ --workspace \ --features all-linux \ --all-targets \ ${EXCLUDE[@]/#/--exclude } \ - ${CLIPPY_ARGS} + "$@" -- -Dwarnings for crate in common/*; do if [ -d "${crate}" ] && [[ ! " ${EXCLUDE_COMMON[*]} " =~ " ${crate} " ]]; then echo "" echo "Clippy ${crate}" - (cd "${crate}" && cargo clippy --all-targets ${CLIPPY_ARGS}) + (cd "${crate}" && cargo clippy --all-targets "$@" -- -Dwarnings) fi done