chore: Release #183
audit.yml
on: push
Cancel previous runs
2s
security_audit
1m 1s
Annotations
37 warnings
Cancel previous runs
The following actions uses node12 which is deprecated and will be forced to run on node16: styfle/cancel-workflow-action@0.4.1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
|
useless use of `vec!`:
atat_derive/src/helpers.rs#L55
warning: useless use of `vec!`
--> atat_derive/src/helpers.rs:55:17
|
55 | bounds: vec![trait_bound].iter().cloned().collect(),
| ^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[trait_bound]`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec
= note: `-W clippy::useless-vec` implied by `-W clippy::all`
|
use Option::map_or_else instead of an if let/else:
atat_derive/src/cmd.rs#L53
warning: use Option::map_or_else instead of an if let/else
--> atat_derive/src/cmd.rs:53:20
|
53 | let attempts = match attempts {
| ____________________^
54 | | Some(attempts) => {
55 | | quote! {
56 | | const ATTEMPTS: u8 = #attempts;
... |
59 | | None => quote! {},
60 | | };
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else
help: try
|
53 ~ let attempts = attempts.map_or_else(|| quote! {}, |attempts| quote! {
54 + const ATTEMPTS: u8 = #attempts;
55 ~ });
|
|
use Option::map_or_else instead of an if let/else:
atat_derive/src/cmd.rs#L44
warning: use Option::map_or_else instead of an if let/else
--> atat_derive/src/cmd.rs:44:21
|
44 | let abortable = match abortable {
| _____________________^
45 | | Some(abortable) => {
46 | | quote! {
47 | | const CAN_ABORT: bool = #abortable;
... |
50 | | None => quote! {},
51 | | };
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else
help: try
|
44 ~ let abortable = abortable.map_or_else(|| quote! {}, |abortable| quote! {
45 + const CAN_ABORT: bool = #abortable;
46 ~ });
|
|
use Option::map_or_else instead of an if let/else:
atat_derive/src/cmd.rs#L35
warning: use Option::map_or_else instead of an if let/else
--> atat_derive/src/cmd.rs:35:19
|
35 | let timeout = match timeout_ms {
| ___________________^
36 | | Some(timeout_ms) => {
37 | | quote! {
38 | | const MAX_TIMEOUT_MS: u32 = #timeout_ms;
... |
41 | | None => quote! {},
42 | | };
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else
= note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery`
help: try
|
35 ~ let timeout = timeout_ms.map_or_else(|| quote! {}, |timeout_ms| quote! {
36 + const MAX_TIMEOUT_MS: u32 = #timeout_ms;
37 ~ });
|
|
usage of wildcard import:
examples/src/common/general/mod.rs#L6
warning: usage of wildcard import
--> examples/src/common/general/mod.rs:6:5
|
6 | use responses::*;
| ^^^^^^^^^^^^ help: try: `responses::{ManufacturerId, ModelId, SoftwareVersion, WifiMac}`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
= note: `-W clippy::wildcard-imports` implied by `-W clippy::pedantic`
|
unnecessary boolean `not` operation:
atat/src/asynch/client.rs#L116
warning: unnecessary boolean `not` operation
--> atat/src/asynch/client.rs:116:9
|
116 | / if !Cmd::EXPECTS_RESPONSE_CODE {
117 | | self.send_command(cmd_slice).await?;
118 | | cmd.parse(Ok(&[]))
119 | | } else {
... |
123 | | cmd.parse((&response).into())
124 | | }
| |_________^
|
= help: remove the `!` and swap the blocks of the `if`/`else`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else
|
consider adding a `;` to the last statement for consistent formatting:
atat/src/asynch/client.rs#L104
warning: consider adding a `;` to the last statement for consistent formatting
--> atat/src/asynch/client.rs:104:13
|
104 | cooldown.await
| ^^^^^^^^^^^^^^ help: add a `;` here: `cooldown.await;`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
|
this could be a `const fn`:
atat/src/asynch/client.rs#L20
warning: this could be a `const fn`
--> atat/src/asynch/client.rs:20:5
|
20 | / pub(crate) fn new(
21 | | writer: W,
22 | | res_channel: &'a ResponseChannel<INGRESS_BUF_SIZE>,
23 | | config: Config,
... |
30 | | }
31 | | }
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn
|
unnecessary boolean `not` operation:
atat/src/blocking/client.rs#L118
warning: unnecessary boolean `not` operation
--> atat/src/blocking/client.rs:118:9
|
118 | / if !Cmd::EXPECTS_RESPONSE_CODE {
119 | | self.send_command(cmd_slice)?;
120 | | cmd.parse(Ok(&[]))
121 | | } else {
... |
124 | | cmd.parse((&response).into())
125 | | }
| |_________^
|
= help: remove the `!` and swap the blocks of the `if`/`else`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else
= note: `-W clippy::if-not-else` implied by `-W clippy::pedantic`
|
this could be a `const fn`:
atat/src/blocking/client.rs#L28
warning: this could be a `const fn`
--> atat/src/blocking/client.rs:28:5
|
28 | / pub(crate) fn new(
29 | | writer: W,
30 | | res_channel: &'a ResponseChannel<INGRESS_BUF_SIZE>,
31 | | config: Config,
... |
38 | | }
39 | | }
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn
|
docs for function which may panic missing `# Panics` section:
atat/src/urc_channel.rs#L33
warning: docs for function which may panic missing `# Panics` section
--> atat/src/urc_channel.rs:33:5
|
33 | pub fn publisher(&self) -> UrcPublisher<Urc, CAPACITY, SUBSCRIBERS> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: first possible panic found here
--> atat/src/urc_channel.rs:34:9
|
34 | self.0.publisher().unwrap()
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
this method could have a `#[must_use]` attribute:
atat/src/urc_channel.rs#L29
warning: this method could have a `#[must_use]` attribute
--> atat/src/urc_channel.rs:29:5
|
29 | pub const fn new() -> Self {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add the attribute: `#[must_use] pub const fn new() -> Self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate
|
docs for function which may panic missing `# Panics` section:
atat/src/response.rs#L22
warning: docs for function which may panic missing `# Panics` section
--> atat/src/response.rs:22:5
|
22 | pub fn ok(value: &[u8]) -> Self {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: first possible panic found here
--> atat/src/response.rs:23:22
|
23 | Response::Ok(Vec::from_slice(value).unwrap())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
this method could have a `#[must_use]` attribute:
atat/src/response.rs#L22
warning: this method could have a `#[must_use]` attribute
--> atat/src/response.rs:22:5
|
22 | pub fn ok(value: &[u8]) -> Self {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add the attribute: `#[must_use] pub fn ok(value: &[u8]) -> Self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate
|
you are deriving `PartialEq` and can implement `Eq`:
atat/src/response.rs#L4
warning: you are deriving `PartialEq` and can implement `Eq`
--> atat/src/response.rs:4:24
|
4 | #[derive(Debug, Clone, PartialEq)]
| ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq
|
consider adding a `;` to the last statement for consistent formatting:
atat/src/ingress.rs#L265
warning: consider adding a `;` to the last statement for consistent formatting
--> atat/src/ingress.rs:265:33
|
265 | ... debug!("Received OK ({}/{})", swallowed, self.pos,)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `debug!("Received OK ({}/{})", swallowed, self.pos,);`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
|
consider adding a `;` to the last statement for consistent formatting:
atat/src/ingress.rs#L180
warning: consider adding a `;` to the last statement for consistent formatting
--> atat/src/ingress.rs:180:33
|
180 | ... debug!("Received OK ({}/{})", swallowed, self.pos,)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `debug!("Received OK ({}/{})", swallowed, self.pos,);`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
= note: `-W clippy::semicolon-if-nothing-returned` implied by `-W clippy::pedantic`
|
this could be a `const fn`:
atat/src/ingress.rs#L105
warning: this could be a `const fn`
--> atat/src/ingress.rs:105:5
|
105 | / pub fn new(
106 | | digester: D,
107 | | res_publisher: ResponsePublisher<'a, INGRESS_BUF_SIZE>,
108 | | urc_publisher: UrcPublisher<'a, Urc, URC_CAPACITY, URC_SUBSCRIBERS>,
... |
116 | | }
117 | | }
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn
= note: `-W clippy::missing-const-for-fn` implied by `-W clippy::nursery`
|
you are deriving `PartialEq` and can implement `Eq`:
atat/src/ingress.rs#L6
warning: you are deriving `PartialEq` and can implement `Eq`
--> atat/src/ingress.rs:6:17
|
6 | #[derive(Debug, PartialEq)]
| ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq
= note: `-W clippy::derive-partial-eq-without-eq` implied by `-W clippy::nursery`
|
use Option::map_or_else instead of an if let/else:
atat/src/digest.rs#L470
warning: use Option::map_or_else instead of an if let/else
--> atat/src/digest.rs:470:9
|
470 | / match x.iter().position(|&x| x != b' ') {
471 | | Some(offset) => &x[offset..],
472 | | None => &x[0..0],
473 | | }
| |_________^ help: try: `x.iter().position(|&x| x != b' ').map_or_else(|| &x[0..0], |offset| &x[offset..])`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else
= note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery`
|
this function could have a `#[must_use]` attribute:
atat/src/digest.rs#L469
warning: this function could have a `#[must_use]` attribute
--> atat/src/digest.rs:469:5
|
469 | pub fn trim_start_ascii_space(x: &[u8]) -> &[u8] {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add the attribute: `#[must_use] pub fn trim_start_ascii_space(x: &[u8]) -> &[u8]`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate
|
this could be rewritten as `let...else`:
atat/src/digest.rs#L461
warning: this could be rewritten as `let...else`
--> atat/src/digest.rs:461:9
|
461 | / let from = match x.iter().position(|x| !x.is_ascii_whitespace()) {
462 | | Some(i) => i,
463 | | None => return &x[0..0],
464 | | };
| |__________^ help: consider writing: `let Some(from) = x.iter().position(|x| !x.is_ascii_whitespace()) else { return &x[0..0] };`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else
= note: `-W clippy::manual-let-else` implied by `-W clippy::pedantic`
|
item in documentation is missing backticks:
atat/src/digest.rs#L35
warning: item in documentation is missing backticks
--> atat/src/digest.rs:35:54
|
35 | /// - if a URC exists but is incomplete, return [ParseError::Incomplete]
| ^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
35 | /// - if a URC exists but is incomplete, return [`ParseError::Incomplete`]
| ~~~~~~~~~~~~~~~~~~~~~~~~
|
item in documentation is missing backticks:
atat/src/digest.rs#L34
warning: item in documentation is missing backticks
--> atat/src/digest.rs:34:37
|
34 | /// - if no URC exists, return [ParseError::NoMatch]
| ^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
= note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic`
help: try
|
34 | /// - if no URC exists, return [`ParseError::NoMatch`]
| ~~~~~~~~~~~~~~~~~~~~~
|
docs for function which may panic missing `# Panics` section:
atat/src/buffers.rs#L60
warning: docs for function which may panic missing `# Panics` section
--> atat/src/buffers.rs:60:5
|
60 | / pub fn split_blocking<W: Write, D: Digester>(
61 | | &self,
62 | | writer: W,
63 | | digester: D,
... |
67 | | crate::blocking::Client<W, INGRESS_BUF_SIZE>,
68 | | ) {
| |_____^
|
note: first possible panic found here
--> atat/src/buffers.rs:72:17
|
72 | self.res_channel.publisher().unwrap(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
docs for function which may panic missing `# Panics` section:
atat/src/buffers.rs#L41
warning: docs for function which may panic missing `# Panics` section
--> atat/src/buffers.rs:41:5
|
41 | / pub fn split<W: embedded_io::asynch::Write, D: Digester>(
42 | | &self,
43 | | writer: W,
44 | | digester: D,
... |
48 | | crate::asynch::Client<W, INGRESS_BUF_SIZE>,
49 | | ) {
| |_____^
|
note: first possible panic found here
--> atat/src/buffers.rs:53:17
|
53 | self.res_channel.publisher().unwrap(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
= note: `-W clippy::missing-panics-doc` implied by `-W clippy::pedantic`
|
this method could have a `#[must_use]` attribute:
atat/src/buffers.rs#L25
warning: this method could have a `#[must_use]` attribute
--> atat/src/buffers.rs:25:5
|
25 | pub const fn new() -> Self {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add the attribute: `#[must_use] pub const fn new() -> Self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate
= note: `-W clippy::must-use-candidate` implied by `-W clippy::pedantic`
|
unnecessary boolean `not` operation:
serde_at/src/ser/mod.rs#L362
warning: unnecessary boolean `not` operation
--> serde_at/src/ser/mod.rs:362:26
|
362 | let ser_struct = if !self.nested_struct {
| __________________________^
363 | | // all calls to serialize_struct after this one will be nested structs
364 | | self.nested_struct = true;
365 | | self.extend_from_slice(self.options.cmd_prefix.as_bytes())?;
... |
369 | | SerializeStruct::new(self, true)
370 | | };
| |_________^
|
= help: remove the `!` and swap the blocks of the `if`/`else`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else
= note: `-W clippy::if-not-else` implied by `-W clippy::pedantic`
|
unnecessary boolean `not` operation:
serde_at/src/ser/mod.rs#L362
warning: unnecessary boolean `not` operation
--> serde_at/src/ser/mod.rs:362:26
|
362 | let ser_struct = if !self.nested_struct {
| __________________________^
363 | | // all calls to serialize_struct after this one will be nested structs
364 | | self.nested_struct = true;
365 | | self.extend_from_slice(self.options.cmd_prefix.as_bytes())?;
... |
369 | | SerializeStruct::new(self, true)
370 | | };
| |_________^
|
= help: remove the `!` and swap the blocks of the `if`/`else`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else
= note: `-W clippy::if-not-else` implied by `-W clippy::pedantic`
|
useless use of `vec!`:
atat_derive/src/helpers.rs#L55
warning: useless use of `vec!`
--> atat_derive/src/helpers.rs:55:17
|
55 | bounds: vec![trait_bound].iter().cloned().collect(),
| ^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[trait_bound]`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec
= note: `-W clippy::useless-vec` implied by `-W clippy::all`
|
use Option::map_or_else instead of an if let/else:
atat_derive/src/cmd.rs#L53
warning: use Option::map_or_else instead of an if let/else
--> atat_derive/src/cmd.rs:53:20
|
53 | let attempts = match attempts {
| ____________________^
54 | | Some(attempts) => {
55 | | quote! {
56 | | const ATTEMPTS: u8 = #attempts;
... |
59 | | None => quote! {},
60 | | };
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else
help: try
|
53 ~ let attempts = attempts.map_or_else(|| quote! {}, |attempts| quote! {
54 + const ATTEMPTS: u8 = #attempts;
55 ~ });
|
|
use Option::map_or_else instead of an if let/else:
atat_derive/src/cmd.rs#L44
warning: use Option::map_or_else instead of an if let/else
--> atat_derive/src/cmd.rs:44:21
|
44 | let abortable = match abortable {
| _____________________^
45 | | Some(abortable) => {
46 | | quote! {
47 | | const CAN_ABORT: bool = #abortable;
... |
50 | | None => quote! {},
51 | | };
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else
help: try
|
44 ~ let abortable = abortable.map_or_else(|| quote! {}, |abortable| quote! {
45 + const CAN_ABORT: bool = #abortable;
46 ~ });
|
|
use Option::map_or_else instead of an if let/else:
atat_derive/src/cmd.rs#L35
warning: use Option::map_or_else instead of an if let/else
--> atat_derive/src/cmd.rs:35:19
|
35 | let timeout = match timeout_ms {
| ___________________^
36 | | Some(timeout_ms) => {
37 | | quote! {
38 | | const MAX_TIMEOUT_MS: u32 = #timeout_ms;
... |
41 | | None => quote! {},
42 | | };
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else
= note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery`
help: try
|
35 ~ let timeout = timeout_ms.map_or_else(|| quote! {}, |timeout_ms| quote! {
36 + const MAX_TIMEOUT_MS: u32 = #timeout_ms;
37 ~ });
|
|
unnecessary boolean `not` operation:
serde_at/src/ser/mod.rs#L362
warning: unnecessary boolean `not` operation
--> serde_at/src/ser/mod.rs:362:26
|
362 | let ser_struct = if !self.nested_struct {
| __________________________^
363 | | // all calls to serialize_struct after this one will be nested structs
364 | | self.nested_struct = true;
365 | | self.extend_from_slice(self.options.cmd_prefix.as_bytes())?;
... |
369 | | SerializeStruct::new(self, true)
370 | | };
| |_________^
|
= help: remove the `!` and swap the blocks of the `if`/`else`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else
= note: `-W clippy::if-not-else` implied by `-W clippy::pedantic`
|
security_audit
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/audit-check@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
|
security_audit
1 warnings found!
|