Skip to content

Commit 60b2c4d

Browse files
chore: ensure same lint config regardless of the environment
The config currently needs to be kept in each root module right now, which is inconvenient and error-prone. Hopefully it gets fixed soon. For a good summary see here: EmbarkStudios/rust-ecosystem#59
1 parent f838249 commit 60b2c4d

File tree

5 files changed

+662
-168
lines changed

5 files changed

+662
-168
lines changed

docker-dev

+2-168
Original file line numberDiff line numberDiff line change
@@ -48,174 +48,6 @@ export COLORBT_SHOW_HIDDEN="0"
4848
export RUST_LOG="warn"
4949
export CARGO_BUILD_TARGET_DIR="${BUILD_DIR_REL}"
5050

51-
export LINT_NORMAL="\
52-
-Wfuture_incompatible \
53-
-Wnonstandard_style \
54-
-Wrust_2018_idioms \
55-
-Wtrivial_numeric_casts \
56-
\
57-
-Wclippy::all \
58-
\
59-
-Wclippy::await_holding_lock \
60-
-Wclippy::char_lit_as_u8 \
61-
-Wclippy::checked_conversions \
62-
-Wclippy::dbg_macro \
63-
-Wclippy::debug_assert_with_mut_call \
64-
-Wclippy::disallowed_script_idents \
65-
-Wclippy::doc_markdown \
66-
-Wclippy::empty_enum \
67-
-Wclippy::enum_glob_use \
68-
-Wclippy::equatable_if_let \
69-
-Wclippy::exit \
70-
-Wclippy::expl_impl_clone_on_copy \
71-
-Wclippy::explicit_deref_methods \
72-
-Wclippy::explicit_into_iter_loop \
73-
-Wclippy::fallible_impl_from \
74-
-Wclippy::filter_map_next \
75-
-Wclippy::flat_map_option \
76-
-Wclippy::float_cmp_const \
77-
-Wclippy::fn_params_excessive_bools \
78-
-Wclippy::fn_to_numeric_cast_any \
79-
-Wclippy::from_iter_instead_of_collect \
80-
-Wclippy::if_let_mutex \
81-
-Wclippy::implicit_clone \
82-
-Wclippy::imprecise_flops \
83-
-Wclippy::index_refutable_slice \
84-
-Wclippy::inefficient_to_string \
85-
-Wclippy::invalid_upcast_comparisons \
86-
-Wclippy::iter_not_returning_iterator \
87-
-Wclippy::large_digit_groups \
88-
-Wclippy::large_stack_arrays \
89-
-Wclippy::large_types_passed_by_value \
90-
-Wclippy::let_unit_value \
91-
-Wclippy::linkedlist \
92-
-Wclippy::lossy_float_literal \
93-
-Wclippy::macro_use_imports \
94-
-Wclippy::manual_ok_or \
95-
-Wclippy::map_err_ignore \
96-
-Wclippy::map_flatten \
97-
-Wclippy::map_unwrap_or \
98-
-Wclippy::match_on_vec_items \
99-
-Wclippy::match_same_arms \
100-
-Wclippy::match_wild_err_arm \
101-
-Wclippy::match_wildcard_for_single_variants \
102-
-Wclippy::mem_forget \
103-
-Wclippy::mismatched_target_os \
104-
-Wclippy::missing_enforced_import_renames \
105-
-Wclippy::mut_mut \
106-
-Wclippy::mutex_integer \
107-
-Wclippy::needless_continue \
108-
-Wclippy::needless_for_each \
109-
-Wclippy::negative_feature_names \
110-
-Wclippy::nonstandard_macro_braces \
111-
-Wclippy::option_option \
112-
-Wclippy::path_buf_push_overwrite \
113-
-Wclippy::ptr_as_ptr \
114-
-Wclippy::rc_mutex \
115-
-Wclippy::ref_option_ref \
116-
-Wclippy::rest_pat_in_fully_bound_structs \
117-
-Wclippy::same_functions_in_if_condition \
118-
-Wclippy::semicolon_if_nothing_returned \
119-
-Wclippy::single_match_else \
120-
-Wclippy::string_add \
121-
-Wclippy::string_add_assign \
122-
-Wclippy::string_lit_as_bytes \
123-
-Wclippy::string_to_string \
124-
-Wclippy::todo \
125-
-Wclippy::trailing_empty_array \
126-
-Wclippy::trait_duplication_in_bounds \
127-
-Wclippy::unimplemented \
128-
-Wclippy::unnecessary_wraps \
129-
-Wclippy::unnested_or_patterns \
130-
-Wclippy::useless_transmute \
131-
-Wclippy::verbose_file_reads \
132-
-Wclippy::zero_sized_map_values \
133-
"
134-
135-
export LINT_EXTRA="\
136-
${LINT_NORMAL} \
137-
-Wclippy::pedantic \
138-
"
139-
140-
export LINT_CRAZY="\
141-
${LINT_EXTRA} \
142-
-Wclippy::restriction \
143-
-Wclippy::nursery \
144-
"
145-
146-
export LINT_ALLOW_NOW_BUT_FIX_THESE_LATER=" \
147-
-Aclippy::cognitive-complexity \
148-
-Aclippy::else-if-without-else \
149-
-Aclippy::expect-used \
150-
-Aclippy::missing-const-for-fn \
151-
-Aclippy::panic \
152-
-Aclippy::panic-in-result-fn \
153-
-Aclippy::suboptimal_flops \
154-
-Aclippy::too_many_arguments \
155-
-Aclippy::unsafe-derive-deserialize \
156-
-Aclippy::unwrap-in-result \
157-
-Aclippy::unwrap-used \
158-
-Aclippy::useless-transmute \
159-
"
160-
161-
export LINT_ALLOW=" \
162-
${LINT_ALLOW_NOW_BUT_FIX_THESE_LATER} \
163-
-Aclippy::as-conversions \
164-
-Aclippy::cast-lossless \
165-
-Aclippy::cast-possible-truncation \
166-
-Aclippy::cast-possible-wrap \
167-
-Aclippy::cast-precision-loss \
168-
-Aclippy::cast-sign-loss \
169-
-Aclippy::default-numeric-fallback \
170-
-Aclippy::doc-markdown \
171-
-Aclippy::exhaustive-enums \
172-
-Aclippy::exhaustive-structs \
173-
-Aclippy::float-arithmetic \
174-
-Aclippy::if-not-else \
175-
-Aclippy::implicit-hasher \
176-
-Aclippy::implicit-return \
177-
-Aclippy::inconsistent_digit_grouping \
178-
-Aclippy::indexing-slicing \
179-
-Aclippy::integer-arithmetic \
180-
-Aclippy::integer-division \
181-
-Aclippy::iter_nth_zero \
182-
-Aclippy::large_digit_groups \
183-
-Aclippy::let-underscore-must-use \
184-
-Aclippy::match-same-arms \
185-
-Aclippy::missing-docs-in-private-items \
186-
-Aclippy::missing-errors-doc \
187-
-Aclippy::missing-panics-doc \
188-
-Aclippy::missing_inline_in_public_items \
189-
-Aclippy::mod-module-files \
190-
-Aclippy::module-name-repetitions \
191-
-Aclippy::module_inception \
192-
-Aclippy::must-use-candidate \
193-
-Aclippy::new_without_default \
194-
-Aclippy::non-ascii-literal \
195-
-Aclippy::option-if-let-else \
196-
-Aclippy::pattern-type-mismatch \
197-
-Aclippy::print-stderr \
198-
-Aclippy::print-stdout \
199-
-Aclippy::separated-literal-suffix \
200-
-Aclippy::shadow-reuse \
201-
-Aclippy::shadow-same \
202-
-Aclippy::shadow-unrelated \
203-
-Aclippy::should_implement_trait \
204-
-Aclippy::similar-names \
205-
-Aclippy::too-many-lines \
206-
-Aclippy::unnecessary-wraps \
207-
-Aclippy::unreachable \
208-
-Aclippy::unreadable-literal \
209-
-Aclippy::unused-self \
210-
-Aclippy::unused-unit \
211-
-Aclippy::use-debug \
212-
-Aclippy::use-self \
213-
-Aclippy::wildcard-enum-match-arm \
214-
"
215-
216-
export LINT_FIX="--fix --allow-staged"
217-
218-
21951
export EXTENSIONS_TO_WATCH="rs,toml,lock"
22052

22153
export FILES_TO_WATCH="\
@@ -240,6 +72,8 @@ export FILES_TO_IGNORE="\
24072
-i 'packages_rs/nextclade-web/src/gen/' \
24173
"
24274

75+
export LINT_FIX="--fix --allow-staged"
76+
24377
BUILD=0
24478
RUN=0
24579
WASM=0

packages_rs/nextclade-web/src/lib.rs

+165
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,168 @@
1+
// Configuration of Rust lints (static analysis). Scroll past it to find the actual code.
2+
// This needs to be kept in each root module right now, which is inconvenient and error-prone.
3+
// Hopefully it gets fixed soon. For a good summary see here: https://github.com/EmbarkStudios/rust-ecosystem/issues/59
4+
//
5+
//
6+
// Disable some of the default rust checks
7+
#![allow(dead_code)]
8+
#![allow(unused_imports)]
9+
#![allow(unused_variables)]
10+
//
11+
// Enable some of the default lints which are disabled by default
12+
#![warn(nonstandard_style)]
13+
#![warn(rust_2018_idioms)]
14+
#![warn(trivial_numeric_casts)]
15+
//
16+
// Enable all clippy lint groups
17+
// Order is important!
18+
#![warn(clippy::all)]
19+
#![warn(clippy::pedantic)]
20+
#![allow(clippy::blanket_clippy_restriction_lints)]
21+
#![warn(clippy::restriction)]
22+
#![warn(clippy::nursery)]
23+
//
24+
// Enable some of the clippy lints disabled by default
25+
#![warn(clippy::await_holding_lock)]
26+
#![warn(clippy::char_lit_as_u8)]
27+
#![warn(clippy::checked_conversions)]
28+
#![warn(clippy::dbg_macro)]
29+
#![warn(clippy::debug_assert_with_mut_call)]
30+
#![warn(clippy::disallowed_script_idents)]
31+
#![warn(clippy::doc_markdown)]
32+
#![warn(clippy::empty_enum)]
33+
#![warn(clippy::enum_glob_use)]
34+
#![warn(clippy::equatable_if_let)]
35+
#![warn(clippy::exit)]
36+
#![warn(clippy::expl_impl_clone_on_copy)]
37+
#![warn(clippy::explicit_deref_methods)]
38+
#![warn(clippy::explicit_into_iter_loop)]
39+
#![warn(clippy::fallible_impl_from)]
40+
#![warn(clippy::filter_map_next)]
41+
#![warn(clippy::flat_map_option)]
42+
#![warn(clippy::float_cmp_const)]
43+
#![warn(clippy::fn_params_excessive_bools)]
44+
#![warn(clippy::fn_to_numeric_cast_any)]
45+
#![warn(clippy::from_iter_instead_of_collect)]
46+
#![warn(clippy::if_let_mutex)]
47+
#![warn(clippy::implicit_clone)]
48+
#![warn(clippy::imprecise_flops)]
49+
#![warn(clippy::index_refutable_slice)]
50+
#![warn(clippy::inefficient_to_string)]
51+
#![warn(clippy::invalid_upcast_comparisons)]
52+
#![warn(clippy::iter_not_returning_iterator)]
53+
#![warn(clippy::large_digit_groups)]
54+
#![warn(clippy::large_stack_arrays)]
55+
#![warn(clippy::large_types_passed_by_value)]
56+
#![warn(clippy::let_unit_value)]
57+
#![warn(clippy::linkedlist)]
58+
#![warn(clippy::lossy_float_literal)]
59+
#![warn(clippy::macro_use_imports)]
60+
#![warn(clippy::manual_ok_or)]
61+
#![warn(clippy::map_err_ignore)]
62+
#![warn(clippy::map_flatten)]
63+
#![warn(clippy::map_unwrap_or)]
64+
#![warn(clippy::match_on_vec_items)]
65+
#![warn(clippy::match_same_arms)]
66+
#![warn(clippy::match_wild_err_arm)]
67+
#![warn(clippy::match_wildcard_for_single_variants)]
68+
#![warn(clippy::mem_forget)]
69+
#![warn(clippy::mismatched_target_os)]
70+
#![warn(clippy::missing_enforced_import_renames)]
71+
#![warn(clippy::mut_mut)]
72+
#![warn(clippy::mutex_integer)]
73+
#![warn(clippy::needless_continue)]
74+
#![warn(clippy::needless_for_each)]
75+
#![warn(clippy::negative_feature_names)]
76+
#![warn(clippy::nonstandard_macro_braces)]
77+
#![warn(clippy::option_option)]
78+
#![warn(clippy::path_buf_push_overwrite)]
79+
#![warn(clippy::ptr_as_ptr)]
80+
#![warn(clippy::rc_mutex)]
81+
#![warn(clippy::ref_option_ref)]
82+
#![warn(clippy::rest_pat_in_fully_bound_structs)]
83+
#![warn(clippy::same_functions_in_if_condition)]
84+
#![warn(clippy::semicolon_if_nothing_returned)]
85+
#![warn(clippy::single_match_else)]
86+
#![warn(clippy::string_add)]
87+
#![warn(clippy::string_add_assign)]
88+
#![warn(clippy::string_lit_as_bytes)]
89+
#![warn(clippy::string_to_string)]
90+
#![warn(clippy::trailing_empty_array)]
91+
#![warn(clippy::trait_duplication_in_bounds)]
92+
#![warn(clippy::unimplemented)]
93+
#![warn(clippy::unnecessary_wraps)]
94+
#![warn(clippy::unnested_or_patterns)]
95+
#![warn(clippy::useless_transmute)]
96+
#![warn(clippy::verbose_file_reads)]
97+
#![warn(clippy::zero_sized_map_values)]
98+
//
99+
// Disabled clippy lints, up for discussion
100+
#![allow(clippy::cognitive_complexity)]
101+
#![allow(clippy::else_if_without_else)]
102+
#![allow(clippy::expect_used)]
103+
#![allow(clippy::missing_const_for_fn)]
104+
#![allow(clippy::panic)]
105+
#![allow(clippy::panic_in_result_fn)]
106+
#![allow(clippy::suboptimal_flops)]
107+
#![allow(clippy::too_many_arguments)]
108+
#![allow(clippy::unsafe_derive_deserialize)]
109+
#![allow(clippy::unwrap_in_result)]
110+
#![allow(clippy::unwrap_used)]
111+
#![allow(clippy::useless_transmute)]
112+
//
113+
// Disabled clippy lints, permanent
114+
#![allow(clippy::as_conversions)]
115+
#![allow(clippy::cast_lossless)]
116+
#![allow(clippy::cast_possible_truncation)]
117+
#![allow(clippy::cast_possible_wrap)]
118+
#![allow(clippy::cast_precision_loss)]
119+
#![allow(clippy::cast_sign_loss)]
120+
#![allow(clippy::default_numeric_fallback)]
121+
#![allow(clippy::doc_markdown)]
122+
#![allow(clippy::exhaustive_enums)]
123+
#![allow(clippy::exhaustive_structs)]
124+
#![allow(clippy::float_arithmetic)]
125+
#![allow(clippy::if_not_else)]
126+
#![allow(clippy::implicit_hasher)]
127+
#![allow(clippy::implicit_return)]
128+
#![allow(clippy::inconsistent_digit_grouping)]
129+
#![allow(clippy::indexing_slicing)]
130+
#![allow(clippy::integer_arithmetic)]
131+
#![allow(clippy::integer_division)]
132+
#![allow(clippy::iter_nth_zero)]
133+
#![allow(clippy::large_digit_groups)]
134+
#![allow(clippy::let_underscore_must_use)]
135+
#![allow(clippy::match_same_arms)]
136+
#![allow(clippy::missing_docs_in_private_items)]
137+
#![allow(clippy::missing_errors_doc)]
138+
#![allow(clippy::missing_inline_in_public_items)]
139+
#![allow(clippy::missing_panics_doc)]
140+
#![allow(clippy::mod_module_files)]
141+
#![allow(clippy::module_inception)]
142+
#![allow(clippy::module_name_repetitions)]
143+
#![allow(clippy::must_use_candidate)]
144+
#![allow(clippy::new_without_default)]
145+
#![allow(clippy::non_ascii_literal)]
146+
#![allow(clippy::option_if_let_else)]
147+
#![allow(clippy::pattern_type_mismatch)]
148+
#![allow(clippy::print_stderr)]
149+
#![allow(clippy::print_stdout)]
150+
#![allow(clippy::separated_literal_suffix)]
151+
#![allow(clippy::shadow_reuse)]
152+
#![allow(clippy::shadow_same)]
153+
#![allow(clippy::shadow_unrelated)]
154+
#![allow(clippy::should_implement_trait)]
155+
#![allow(clippy::similar_names)]
156+
#![allow(clippy::too_many_lines)]
157+
#![allow(clippy::unnecessary_wraps)]
158+
#![allow(clippy::unreachable)]
159+
#![allow(clippy::unreadable_literal)]
160+
#![allow(clippy::unused_self)]
161+
#![allow(clippy::unused_unit)]
162+
#![allow(clippy::use_debug)]
163+
#![allow(clippy::use_self)]
164+
#![allow(clippy::wildcard_enum_match_arm)]
165+
1166
use wasm_bindgen::prelude::*;
2167

3168
use nextclade::analyze::analyze::{AnalysisInput, AnalysisResult, Nextclade, NextcladeParams};

0 commit comments

Comments
 (0)