Skip to content

Build & Test

Build & Test #41

Triggered via push September 5, 2024 12:00
Status Success
Total duration 14m 56s
Artifacts
Matrix: buid-test-check
Fit to window
Zoom out
Zoom in

Annotations

26 warnings
transmute used without annotations: crates/shadowsocks-service/src/local/tun/tcp.rs#L172
warning: transmute used without annotations --> crates/shadowsocks-service/src/local/tun/tcp.rs:172:38 | 172 | let recv_buf = unsafe { mem::transmute::<_, &mut [u8]>(buf.unfilled_mut()) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut [std::mem::MaybeUninit<u8>], &mut [u8]>` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations = note: `#[warn(clippy::missing_transmute_annotations)]` on by default
unnecessary closure used to substitute value for `Option::None`: crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None` --> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46 | 114 | let udp_associate_addr: ServerAddr = self | ______________________________________________^ 115 | | .udp_associate_addr 116 | | .as_ref() 117 | | .or_else(|| self.udp_bind_addr.as_ref()) | |______________--------------------------------------^ | | | help: use `or(..)` instead: `or(self.udp_bind_addr.as_ref())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
unnecessary closure used to substitute value for `Option::None`: crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None` --> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46 | 114 | let udp_associate_addr: ServerAddr = self | ______________________________________________^ 115 | | .udp_associate_addr 116 | | .as_ref() 117 | | .or_else(|| self.udp_bind_addr.as_ref()) 118 | | .unwrap_or_else(|| &self.client_config) | |______________-------------------------------------^ | | | help: use `unwrap_or(..)` instead: `unwrap_or(&self.client_config)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default
this `match` can be collapsed into the outer `if let`: crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs#L58
warning: this `match` can be collapsed into the outer `if let` --> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs:58:21 | 58 | / match errno { 59 | | libc::ENOPROTOOPT => { 60 | | trace!("failed to set SO_REUSEPORT, error: {}", err); 61 | | } ... | 65 | | } 66 | | } | |_____________________^ | help: the outer pattern can be modified to include the inner pattern --> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs:57:29 | 57 | if let Some(errno) = err.raw_os_error() { | ^^^^^ replace this binding 58 | match errno { 59 | libc::ENOPROTOOPT => { | ^^^^^^^^^^^^^^^^^ with this pattern = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match = note: `#[warn(clippy::collapsible_match)]` on by default
casting the result of `i32::abs()` to u32: crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs#L191
warning: casting the result of `i32::abs()` to u32 --> crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs:191:30 | 191 | .map(|s| (*s as i32 - self.data.latency_median as i32).abs() as u32) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*s as i32 - self.data.latency_median as i32).unsigned_abs()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned = note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default
using `clone` on type `ServerStatData` which implements the `Copy` trait: crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L69
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait --> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:69:9 | 69 | self.stat_data.lock().await.data().clone() | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.stat_data.lock().await.data()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
using `clone` on type `ServerStatData` which implements the `Copy` trait: crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L56
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait --> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:56:38 | 56 | (stat.push_score(score), stat.data().clone()) | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*stat.data()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
redundant pattern matching, consider using `is_ok()`: crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L919
warning: redundant pattern matching, consider using `is_ok()` --> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:919:16 | 919 | if let Ok(..) = response.parse(&buf) { | -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
redundant pattern matching, consider using `is_ok()`: crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L878
warning: redundant pattern matching, consider using `is_ok()` --> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:878:16 | 878 | if let Ok(..) = response.parse(&buf) { | -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching = note: `#[warn(clippy::redundant_pattern_matching)]` on by default
unused import: `AbstractDevice`: crates/shadowsocks-service/src/local/tun/mod.rs#L32
warning: unused import: `AbstractDevice` --> crates/shadowsocks-service/src/local/tun/mod.rs:32:78 | 32 | create_as_async, AsyncDevice, Configuration as TunConfiguration, AbstractDevice, Error as TunError, Layer, | ^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
variable does not need to be mutable: crates/shadowsocks-service/src/local/http/http_client.rs#L347
warning: variable does not need to be mutable --> crates/shadowsocks-service/src/local/http/http_client.rs:347:42 | 347 | pub async fn send_request(&mut self, mut req: Request<B>) -> hyper::Result<Response<body::Incoming>> { | ----^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default
unused variable: `auth`: crates/shadowsocks-service/src/local/http/http_client.rs#L356
warning: unused variable: `auth` --> crates/shadowsocks-service/src/local/http/http_client.rs:356:38 | 356 | HttpConnection::Http2(r, auth) => { | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
unused variable: `auth`: crates/shadowsocks-service/src/local/http/http_client.rs#L349
warning: unused variable: `auth` --> crates/shadowsocks-service/src/local/http/http_client.rs:349:38 | 349 | HttpConnection::Http1(r, auth) => { | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` | = note: `#[warn(unused_variables)]` on by default
transmute used without annotations: crates/shadowsocks-service/src/local/tun/tcp.rs#L172
warning: transmute used without annotations --> crates/shadowsocks-service/src/local/tun/tcp.rs:172:38 | 172 | let recv_buf = unsafe { mem::transmute::<_, &mut [u8]>(buf.unfilled_mut()) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut [std::mem::MaybeUninit<u8>], &mut [u8]>` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations = note: `#[warn(clippy::missing_transmute_annotations)]` on by default
unnecessary closure used to substitute value for `Option::None`: crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None` --> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46 | 114 | let udp_associate_addr: ServerAddr = self | ______________________________________________^ 115 | | .udp_associate_addr 116 | | .as_ref() 117 | | .or_else(|| self.udp_bind_addr.as_ref()) | |______________--------------------------------------^ | | | help: use `or(..)` instead: `or(self.udp_bind_addr.as_ref())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
unnecessary closure used to substitute value for `Option::None`: crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None` --> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46 | 114 | let udp_associate_addr: ServerAddr = self | ______________________________________________^ 115 | | .udp_associate_addr 116 | | .as_ref() 117 | | .or_else(|| self.udp_bind_addr.as_ref()) 118 | | .unwrap_or_else(|| &self.client_config) | |______________-------------------------------------^ | | | help: use `unwrap_or(..)` instead: `unwrap_or(&self.client_config)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default
this `match` can be collapsed into the outer `if let`: crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs#L77
warning: this `match` can be collapsed into the outer `if let` --> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs:77:21 | 77 | / match errno { 78 | | libc::ENOPROTOOPT => { 79 | | // SO_REUSEPORT is supported after 3.9 80 | | trace!("failed to set SO_REUSEPORT, error: {}", err); ... | 85 | | } 86 | | } | |_____________________^ | help: the outer pattern can be modified to include the inner pattern --> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs:76:29 | 76 | if let Some(errno) = err.raw_os_error() { | ^^^^^ replace this binding 77 | match errno { 78 | libc::ENOPROTOOPT => { | ^^^^^^^^^^^^^^^^^ with this pattern = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match = note: `#[warn(clippy::collapsible_match)]` on by default
casting the result of `i32::abs()` to u32: crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs#L191
warning: casting the result of `i32::abs()` to u32 --> crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs:191:30 | 191 | .map(|s| (*s as i32 - self.data.latency_median as i32).abs() as u32) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*s as i32 - self.data.latency_median as i32).unsigned_abs()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned = note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default
using `clone` on type `ServerStatData` which implements the `Copy` trait: crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L69
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait --> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:69:9 | 69 | self.stat_data.lock().await.data().clone() | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.stat_data.lock().await.data()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
using `clone` on type `ServerStatData` which implements the `Copy` trait: crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L56
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait --> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:56:38 | 56 | (stat.push_score(score), stat.data().clone()) | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*stat.data()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
redundant pattern matching, consider using `is_ok()`: crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L919
warning: redundant pattern matching, consider using `is_ok()` --> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:919:16 | 919 | if let Ok(..) = response.parse(&buf) { | -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
redundant pattern matching, consider using `is_ok()`: crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L878
warning: redundant pattern matching, consider using `is_ok()` --> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:878:16 | 878 | if let Ok(..) = response.parse(&buf) { | -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching = note: `#[warn(clippy::redundant_pattern_matching)]` on by default
unused import: `AbstractDevice`: crates/shadowsocks-service/src/local/tun/mod.rs#L32
warning: unused import: `AbstractDevice` --> crates/shadowsocks-service/src/local/tun/mod.rs:32:78 | 32 | create_as_async, AsyncDevice, Configuration as TunConfiguration, AbstractDevice, Error as TunError, Layer, | ^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
variable does not need to be mutable: crates/shadowsocks-service/src/local/http/http_client.rs#L347
warning: variable does not need to be mutable --> crates/shadowsocks-service/src/local/http/http_client.rs:347:42 | 347 | pub async fn send_request(&mut self, mut req: Request<B>) -> hyper::Result<Response<body::Incoming>> { | ----^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default
unused variable: `auth`: crates/shadowsocks-service/src/local/http/http_client.rs#L356
warning: unused variable: `auth` --> crates/shadowsocks-service/src/local/http/http_client.rs:356:38 | 356 | HttpConnection::Http2(r, auth) => { | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
unused variable: `auth`: crates/shadowsocks-service/src/local/http/http_client.rs#L349
warning: unused variable: `auth` --> crates/shadowsocks-service/src/local/http/http_client.rs:349:38 | 349 | HttpConnection::Http1(r, auth) => { | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` | = note: `#[warn(unused_variables)]` on by default