| #!/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. |
| borrowed_box |
| char_lit_as_u8 |
| clone_on_copy |
| collapsible_if |
| comparison_chain |
| extra_unused_lifetimes |
| for_kv_map |
| inefficient_to_string |
| into_iter_on_ref |
| let_unit_value |
| missing_safety_doc |
| needless_range_loop |
| needless_return |
| option_map_unit_fn |
| question_mark |
| range_plus_one |
| redundant_clone |
| redundant_closure |
| single_match |
| slow_vector_initialization |
| unnecessary_filter_map |
| unnecessary_mut_passed |
| unneeded_field_pattern |
| useless_format |
| wrong_self_convention |
| |
| # We don't care about these lints. Okay to remain suppressed globally. |
| blacklisted_name |
| 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 |
| transmute_ptr_to_ptr |
| trivially_copy_pass_by_ref |
| type_complexity |
| unreadable_literal |
| useless_let_if_seq |
| useless_transmute |
| new-ret-no-self |
| ) |
| |
| # 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" |
| |
| cargo clippy --all-features --all-targets -- ${SUPPRESS[@]/#/-Aclippy::} \ |
| "${CLIPPY_ARGS[@]}" -D warnings |