From 3db11cd75106c48c3a2b522ead91f8262f8e4899 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 11 Jul 2022 23:15:36 +0200 Subject: [PATCH 1/4] Use cargo cranky instead of cargo clippy cargo cranky (https://github.com/ericseppanen/cargo-cranky) is a new tool that passes lints specified in a Cranky.toml to cargo clippy. This is a possible solution to https://github.com/rust-lang/cargo/issues/5034 --- .cargo/config.toml | 100 ---------------------------------- .github/workflows/rust.yml | 10 ++-- Cranky.toml | 106 +++++++++++++++++++++++++++++++++++++ egui-wgpu/src/winit.rs | 4 +- sh/check.sh | 4 +- 5 files changed, 116 insertions(+), 108 deletions(-) delete mode 100644 .cargo/config.toml create mode 100644 Cranky.toml diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index f34c83ac46b..00000000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,100 +0,0 @@ -[target.'cfg(all())'] -rustflags = [ - # Global lints/warnings. - # See https://github.com/EmbarkStudios/rust-ecosystem/issues/22 for why we do this here - "-Dunsafe_code", - "-Wclippy::all", - "-Wclippy::await_holding_lock", - "-Wclippy::char_lit_as_u8", - "-Wclippy::checked_conversions", - "-Wclippy::dbg_macro", - "-Wclippy::debug_assert_with_mut_call", - "-Wclippy::disallowed_methods", - "-Wclippy::disallowed_script_idents", - "-Wclippy::doc_markdown", - "-Wclippy::empty_enum", - "-Wclippy::enum_glob_use", - "-Wclippy::equatable_if_let", - "-Wclippy::exit", - "-Wclippy::expl_impl_clone_on_copy", - "-Wclippy::explicit_deref_methods", - "-Wclippy::explicit_into_iter_loop", - "-Wclippy::fallible_impl_from", - "-Wclippy::filter_map_next", - "-Wclippy::flat_map_option", - "-Wclippy::float_cmp_const", - "-Wclippy::fn_params_excessive_bools", - "-Wclippy::fn_to_numeric_cast_any", - "-Wclippy::from_iter_instead_of_collect", - "-Wclippy::if_let_mutex", - "-Wclippy::implicit_clone", - "-Wclippy::imprecise_flops", - "-Wclippy::index_refutable_slice", - "-Wclippy::inefficient_to_string", - "-Wclippy::invalid_upcast_comparisons", - "-Wclippy::iter_not_returning_iterator", - "-Wclippy::large_digit_groups", - "-Wclippy::large_stack_arrays", - "-Wclippy::large_types_passed_by_value", - "-Wclippy::let_unit_value", - "-Wclippy::linkedlist", - "-Wclippy::lossy_float_literal", - "-Wclippy::macro_use_imports", - "-Wclippy::manual_ok_or", - "-Wclippy::map_err_ignore", - "-Wclippy::map_flatten", - "-Wclippy::map_unwrap_or", - "-Wclippy::match_on_vec_items", - "-Wclippy::match_same_arms", - "-Wclippy::match_wild_err_arm", - "-Wclippy::match_wildcard_for_single_variants", - "-Wclippy::mem_forget", - "-Wclippy::mismatched_target_os", - "-Wclippy::missing_enforced_import_renames", - "-Wclippy::missing_errors_doc", - "-Wclippy::missing_safety_doc", - "-Wclippy::mut_mut", - "-Wclippy::mutex_integer", - "-Wclippy::needless_borrow", - "-Wclippy::needless_continue", - "-Wclippy::needless_for_each", - "-Wclippy::needless_pass_by_value", - "-Wclippy::negative_feature_names", - "-Wclippy::nonstandard_macro_braces", - "-Wclippy::option_option", - "-Wclippy::path_buf_push_overwrite", - "-Wclippy::ptr_as_ptr", - "-Wclippy::rc_mutex", - "-Wclippy::ref_option_ref", - "-Wclippy::rest_pat_in_fully_bound_structs", - "-Wclippy::same_functions_in_if_condition", - "-Wclippy::semicolon_if_nothing_returned", - "-Wclippy::single_match_else", - "-Wclippy::str_to_string", - "-Wclippy::string_add_assign", - "-Wclippy::string_add", - "-Wclippy::string_lit_as_bytes", - "-Wclippy::string_to_string", - "-Wclippy::todo", - "-Wclippy::trailing_empty_array", - "-Wclippy::trait_duplication_in_bounds", - "-Wclippy::unimplemented", - "-Wclippy::unnecessary_wraps", - "-Wclippy::unnested_or_patterns", - "-Wclippy::unused_self", - "-Wclippy::useless_transmute", - "-Wclippy::verbose_file_reads", - "-Wclippy::zero_sized_map_values", - "-Wfuture_incompatible", - "-Wnonstandard_style", - "-Wrust_2018_idioms", - "-Wrustdoc::missing_crate_level_docs", - "-Wsemicolon_in_expressions_from_macros", - "-Wtrivial_numeric_casts", - "-Wunused_extern_crates", - "-Wunused_import_braces", - # "-Wclippy::cloned_instead_of_copied", - # "-Wclippy::mod_module_files", - # "-Wtrivial_casts", - # "-Wunused_qualifications", -] diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 6dccf7db988..87747f978c7 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -142,8 +142,8 @@ jobs: command: fmt args: --all -- --check - clippy: - name: cargo clippy + cranky: + name: cargo cranky runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -152,14 +152,14 @@ jobs: profile: minimal toolchain: 1.60.0 override: true - - run: rustup component add clippy + - run: cargo install cargo-cranky - name: Install packages (Linux) if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install libspeechd-dev libgtk-3-dev # libgtk-3-dev is used by rfd - uses: actions-rs/cargo@v1 with: - command: clippy - args: --workspace --all-targets --all-features -- -D warnings -W clippy::all + command: cranky + args: --workspace --all-targets --all-features -- -D warnings doc: name: cargo doc diff --git a/Cranky.toml b/Cranky.toml new file mode 100644 index 00000000000..b280313db0a --- /dev/null +++ b/Cranky.toml @@ -0,0 +1,106 @@ +# https://github.com/ericseppanen/cargo-cranky +# cargo install cargo-cranky && cargo cranky + +deny = [ + "unsafe_code", +] + +warn = [ + "clippy::all", + "clippy::await_holding_lock", + "clippy::char_lit_as_u8", + "clippy::checked_conversions", + "clippy::dbg_macro", + "clippy::debug_assert_with_mut_call", + "clippy::disallowed_methods", + "clippy::disallowed_script_idents", + "clippy::doc_markdown", + "clippy::empty_enum", + "clippy::enum_glob_use", + "clippy::equatable_if_let", + "clippy::exit", + "clippy::expl_impl_clone_on_copy", + "clippy::explicit_deref_methods", + "clippy::explicit_into_iter_loop", + "clippy::fallible_impl_from", + "clippy::filter_map_next", + "clippy::flat_map_option", + "clippy::float_cmp_const", + "clippy::fn_params_excessive_bools", + "clippy::fn_to_numeric_cast_any", + "clippy::from_iter_instead_of_collect", + "clippy::if_let_mutex", + "clippy::implicit_clone", + "clippy::imprecise_flops", + "clippy::index_refutable_slice", + "clippy::inefficient_to_string", + "clippy::invalid_upcast_comparisons", + "clippy::iter_not_returning_iterator", + "clippy::large_digit_groups", + "clippy::large_stack_arrays", + "clippy::large_types_passed_by_value", + "clippy::let_unit_value", + "clippy::linkedlist", + "clippy::lossy_float_literal", + "clippy::macro_use_imports", + "clippy::manual_ok_or", + "clippy::map_err_ignore", + "clippy::map_flatten", + "clippy::map_unwrap_or", + "clippy::match_on_vec_items", + "clippy::match_same_arms", + "clippy::match_wild_err_arm", + "clippy::match_wildcard_for_single_variants", + "clippy::mem_forget", + "clippy::mismatched_target_os", + "clippy::missing_enforced_import_renames", + "clippy::missing_errors_doc", + "clippy::missing_safety_doc", + "clippy::mut_mut", + "clippy::mutex_integer", + "clippy::needless_borrow", + "clippy::needless_continue", + "clippy::needless_for_each", + "clippy::needless_pass_by_value", + "clippy::negative_feature_names", + "clippy::nonstandard_macro_braces", + "clippy::option_option", + "clippy::path_buf_push_overwrite", + "clippy::ptr_as_ptr", + "clippy::rc_mutex", + "clippy::ref_option_ref", + "clippy::rest_pat_in_fully_bound_structs", + "clippy::same_functions_in_if_condition", + "clippy::semicolon_if_nothing_returned", + "clippy::single_match_else", + "clippy::str_to_string", + "clippy::string_add_assign", + "clippy::string_add", + "clippy::string_lit_as_bytes", + "clippy::string_to_string", + "clippy::todo", + "clippy::trailing_empty_array", + "clippy::trait_duplication_in_bounds", + "clippy::unimplemented", + "clippy::unnecessary_wraps", + "clippy::unnested_or_patterns", + "clippy::unused_self", + "clippy::useless_transmute", + "clippy::verbose_file_reads", + "clippy::zero_sized_map_values", + "future_incompatible", + "nonstandard_style", + "rust_2018_idioms", + "rustdoc::missing_crate_level_docs", + "semicolon_in_expressions_from_macros", + "trivial_numeric_casts", + "unused_extern_crates", + "unused_import_braces", + # "clippy::cloned_instead_of_copied", + # "clippy::mod_module_files", + # "trivial_casts", + # "unused_qualifications", +] + +allow = [ +] diff --git a/egui-wgpu/src/winit.rs b/egui-wgpu/src/winit.rs index a03f368667c..2b6c6d0239e 100644 --- a/egui-wgpu/src/winit.rs +++ b/egui-wgpu/src/winit.rs @@ -179,8 +179,8 @@ impl<'a> Painter<'a> { self.ensure_render_state_for_surface(&surface); let size = window.inner_size(); - let width = size.width as u32; - let height = size.height as u32; + let width = size.width; + let height = size.height; self.surface_state = Some(SurfaceState { surface, width, diff --git a/sh/check.sh b/sh/check.sh index adb42ac0af7..7baa118cc43 100755 --- a/sh/check.sh +++ b/sh/check.sh @@ -6,6 +6,8 @@ set -eux # Checks all tests, lints etc. # Basically does what the CI does. +cargo install cargo-cranky # Uses lints defined in Cranky.toml. See https://github.com/ericseppanen/cargo-cranky + RUSTFLAGS="-D warnings" RUSTDOCFLAGS="-D warnings" # https://github.com/emilk/egui/pull/1454 @@ -13,7 +15,7 @@ cargo check --workspace --all-targets cargo check --workspace --all-targets --all-features cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features -cargo clippy --workspace --all-targets --all-features -- -D warnings -W clippy::all +cargo cranky --workspace --all-targets --all-features -- -D warnings -W clippy::all cargo test --workspace --all-targets --all-features cargo test --workspace --doc # slow - checks all doc-tests cargo fmt --all -- --check From 2d160b52ef8ecb219a081c8d74041a41b44e794c Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 11 Jul 2022 23:20:34 +0200 Subject: [PATCH 2/4] Test if CI now catches clippy issue Same test as in https://github.com/emilk/egui/pull/1451 which the current CI fails to catch. --- emath/src/rect.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emath/src/rect.rs b/emath/src/rect.rs index 26b794501ad..6b3fcb3afae 100644 --- a/emath/src/rect.rs +++ b/emath/src/rect.rs @@ -102,7 +102,7 @@ impl Rect { pub fn from_points(points: &[Pos2]) -> Self { let mut rect = Rect::NOTHING; for &p in points { - rect.extend_with(p); + rect.extend_with(p) } rect } From d2e5eb5160c546d5b1f5bb130743f7ac61502fee Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 11 Jul 2022 23:27:04 +0200 Subject: [PATCH 3/4] Revert "Test if CI now catches clippy issue" This reverts commit 2d160b52ef8ecb219a081c8d74041a41b44e794c. --- emath/src/rect.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emath/src/rect.rs b/emath/src/rect.rs index 6b3fcb3afae..26b794501ad 100644 --- a/emath/src/rect.rs +++ b/emath/src/rect.rs @@ -102,7 +102,7 @@ impl Rect { pub fn from_points(points: &[Pos2]) -> Self { let mut rect = Rect::NOTHING; for &p in points { - rect.extend_with(p) + rect.extend_with(p); } rect } From 550e99fb736199fd6a3fcca78d21b8b7f892aa00 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 12 Jul 2022 09:55:43 +0200 Subject: [PATCH 4/4] Remove `-W clippy::all` from `check.sh` (rely on `Cranky.toml` instead) --- sh/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sh/check.sh b/sh/check.sh index 7baa118cc43..23d80fab5ad 100755 --- a/sh/check.sh +++ b/sh/check.sh @@ -15,7 +15,7 @@ cargo check --workspace --all-targets cargo check --workspace --all-targets --all-features cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features -cargo cranky --workspace --all-targets --all-features -- -D warnings -W clippy::all +cargo cranky --workspace --all-targets --all-features -- -D warnings cargo test --workspace --all-targets --all-features cargo test --workspace --doc # slow - checks all doc-tests cargo fmt --all -- --check