#!/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

    # 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.
    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
