mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-11 04:26:38 +00:00
102 lines
2.5 KiB
Text
102 lines
2.5 KiB
Text
|
#!/bin/bash
|
||
|
|
||
|
# Copyright 2019 The Chromium OS Authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
# Run `cargo clippy` on all Rust code in crosvm with a mindful set of lints
|
||
|
# suppressed.
|
||
|
|
||
|
set -eo pipefail
|
||
|
|
||
|
USE_CACHE=false
|
||
|
CLIPPY_ARGS=("$@")
|
||
|
|
||
|
# TODO: When we add more options, use a fancier parsing mechanism such as
|
||
|
# getopts. Also use the Rust convention of -- separating the arguments for this
|
||
|
# script itself from the ones for clippy.
|
||
|
if (("$#" > 0)) && [[ "$1" == "--use-cache" ]]; then
|
||
|
USE_CACHE=true
|
||
|
CLIPPY_ARGS=("${CLIPPY_ARGS[@]:1}")
|
||
|
fi
|
||
|
|
||
|
# Change into directory of script, which is crosvm/bin.
|
||
|
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||
|
|
||
|
# Jump up to root directory of crosvm repo.
|
||
|
cd ..
|
||
|
|
||
|
SUPPRESS=(
|
||
|
# TODO(crbug/908640): To be resolved.
|
||
|
collapsible_if
|
||
|
comparison_chain
|
||
|
missing_safety_doc
|
||
|
wrong_self_convention
|
||
|
# To be fixed in external libraries
|
||
|
upper_case_acronyms
|
||
|
from_over_into
|
||
|
|
||
|
# 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
|
||
|
)
|
||
|
|
||
|
FEATURES=(
|
||
|
default
|
||
|
direct
|
||
|
audio
|
||
|
gpu
|
||
|
plugin
|
||
|
tpm
|
||
|
usb
|
||
|
video-decoder
|
||
|
video-encoder
|
||
|
wl-dmabuf
|
||
|
x
|
||
|
virgl_renderer_next
|
||
|
composite-disk
|
||
|
virgl_renderer
|
||
|
gfxstream
|
||
|
gdb
|
||
|
)
|
||
|
printf -v FEATURES_LIST '%s,' "${FEATURES[@]}"
|
||
|
|
||
|
# Needed or else clippy won't re-run on code that has already compiled.
|
||
|
if [[ "${USE_CACHE}" == false ]]; then
|
||
|
cargo clean
|
||
|
fi
|
||
|
|
||
|
# Need to set pass --sysroot for cargo-clippy manually.
|
||
|
# cf. https://github.com/rust-lang/rust-clippy/issues/3523
|
||
|
RUST_SYSROOT=$(rustc --print sysroot)
|
||
|
RUSTFLAGS="${RUSTFLAGS:-}"
|
||
|
export RUSTFLAGS="$RUSTFLAGS --sysroot=$RUST_SYSROOT"
|
||
|
|
||
|
# TODO(b/192373803): We are skipping a lot of crates by not running on
|
||
|
# --workspace
|
||
|
cargo clippy --features ${FEATURES_LIST} --all-targets -- \
|
||
|
${SUPPRESS[@]/#/-Aclippy::} "${CLIPPY_ARGS[@]}" -D warnings
|