summary refs log tree commit diff
path: root/bin/clippy
diff options
context:
space:
mode:
Diffstat (limited to 'bin/clippy')
-rwxr-xr-xbin/clippy75
1 files changed, 75 insertions, 0 deletions
diff --git a/bin/clippy b/bin/clippy
new file mode 100755
index 0000000..a7a70c1
--- /dev/null
+++ b/bin/clippy
@@ -0,0 +1,75 @@
+#!/bin/bash
+
+# Run `cargo clippy` on all Rust code in crosvm with a mindful set of lints
+# suppressed.
+
+set -euo pipefail
+
+# Change into directory of script, which is crosvm/bin.
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+# Jump up to root directory of crosvm repo.
+cd ..
+
+SUPPRESS=(
+    # To be resolved.
+    assign_op_pattern
+    block_in_if_condition_stmt
+    clone_on_copy
+    collapsible_if
+    const_static_lifetime
+    extra_unused_lifetimes
+    into_iter_on_array
+    let_and_return
+    let_unit_value
+    match_ref_pats
+    needless_return
+    option_map_unit_fn
+    question_mark
+    range_plus_one
+    redundant_closure
+    redundant_pattern_matching
+    single_match
+    string_lit_as_bytes
+    toplevel_ref_arg
+    unit_arg
+    unneeded_field_pattern
+    unused_unit
+    useless_format
+    while_let_loop
+
+    # To be resolved or suppressed locally.
+    absurd_extreme_comparisons
+    cast_ptr_alignment
+    if_same_then_else
+    ptr_arg
+
+    # We don't care about these lints. Okay to remain suppressed globally.
+    blacklisted_name
+    cast_lossless
+    cyclomatic_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
+)
+
+# Needed or else clippy won't re-run on code that has already compiled.
+cargo clean
+
+cargo clippy --all-features -- ${SUPPRESS[@]/#/-Aclippy::} "$@"