fix: build for macOS #252
Triggered via pull request
May 10, 2024 09:46
johanneskoester
synchronize
#431
Status
Success
Total duration
12s
Artifacts
–
conventional-prs.yml
on: pull_request_target
title-format
2s
Annotations
41 warnings
title-format
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: amannn/[email protected]. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
|
title-format
The following actions uses node12 which is deprecated and will be forced to run on node16: amannn/[email protected]. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
|
the type `hts_sys::bam1_t` does not permit being left uninitialized:
src/bam/record.rs#L129
warning: the type `hts_sys::bam1_t` does not permit being left uninitialized
--> src/bam/record.rs:129:42
|
129 | let mut inner = unsafe { MaybeUninit::uninit().assume_init() };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: integers must be initialized
= note: `#[warn(invalid_value)]` on by default
|
usage of an `Arc` that is not `Send` and `Sync`:
src/tpool.rs#L33
warning: usage of an `Arc` that is not `Send` and `Sync`
--> src/tpool.rs:33:26
|
33 | let handle = Arc::new(RefCell::new(inner));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `Arc<RefCell<InnerThreadPool>>` is not `Send` and `Sync` as:
= note: - the trait `Send` is not implemented for `RefCell<InnerThreadPool>`
= note: - the trait `Sync` is not implemented for `RefCell<InnerThreadPool>`
= help: consider using an `Rc` instead. `Arc` does not provide benefits for non `Send` and `Sync` types
= note: if you intend to use `Arc` with `Send` and `Sync` traits
= note: wrap the inner type with a `Mutex` or implement `Send` and `Sync` for `RefCell<InnerThreadPool>`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync
= note: `#[warn(clippy::arc_with_non_send_sync)]` on by default
|
unneeded `return` statement:
src/bgzf/mod.rs#L231
warning: unneeded `return` statement
--> src/bgzf/mod.rs:231:9
|
231 | return Ok(ffi::CString::new(write_string).unwrap());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
231 - return Ok(ffi::CString::new(write_string).unwrap());
231 + Ok(ffi::CString::new(write_string).unwrap())
|
|
redundant closure:
src/bcf/record.rs#L1471
warning: redundant closure
--> src/bcf/record.rs:1471:22
|
1471 | .map(|s| trim_slice(s))
| ^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `trim_slice`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure
|
redundant closure:
src/bcf/record.rs#L1448
warning: redundant closure
--> src/bcf/record.rs:1448:22
|
1448 | .map(|s| trim_slice(s))
| ^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `trim_slice`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure
= note: `#[warn(clippy::redundant_closure)]` on by default
|
very complex type used. Consider factoring parts into `type` definitions:
src/bcf/record.rs#L1329
warning: very complex type used. Consider factoring parts into `type` definitions
--> src/bcf/record.rs:1329:32
|
1329 | pub fn string(mut self) -> Result<Option<BufferBacked<'b, Vec<&'b [u8]>, B>>> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
= note: `#[warn(clippy::type_complexity)]` on by default
|
dereferencing a tuple pattern where every element takes a reference:
src/bcf/record.rs#L1196
warning: dereferencing a tuple pattern where every element takes a reference
--> src/bcf/record.rs:1196:13
|
1196 | let &Genotype(ref alleles) = self;
| ^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference
= note: `#[warn(clippy::needless_borrowed_reference)]` on by default
help: try removing the `&` and `ref` parts
|
1196 - let &Genotype(ref alleles) = self;
1196 + let Genotype(alleles) = self;
|
|
returning the result of a `let` binding from a block:
src/bcf/record.rs#L1097
warning: returning the result of a `let` binding from a block
--> src/bcf/record.rs:1097:13
|
1096 | let inner = htslib::bcf_dup(self.inner);
| ---------------------------------------- unnecessary `let` binding
1097 | inner
| ^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
= note: `#[warn(clippy::let_and_return)]` on by default
help: return the expression directly
|
1096 ~
1097 ~ htslib::bcf_dup(self.inner)
|
|
casting raw pointers to the same type and constness is unnecessary (`*mut libc::c_void` -> `*mut libc::c_void`):
src/bcf/record.rs#L126
warning: casting raw pointers to the same type and constness is unnecessary (`*mut libc::c_void` -> `*mut libc::c_void`)
--> src/bcf/record.rs:126:26
|
126 | ::libc::free(self.inner as *mut ::libc::c_void);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.inner`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
|
you should consider adding a `Default` implementation for `Buffer`:
src/bcf/record.rs#L115
warning: you should consider adding a `Default` implementation for `Buffer`
--> src/bcf/record.rs:115:5
|
115 | / pub fn new() -> Self {
116 | | Buffer {
117 | | inner: ptr::null_mut(),
118 | | len: 0,
119 | | }
120 | | }
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default
= note: `#[warn(clippy::new_without_default)]` on by default
help: try adding this
|
114 + impl Default for Buffer {
115 + fn default() -> Self {
116 + Self::new()
117 + }
118 + }
|
|
casting raw pointers to the same type and constness is unnecessary (`*mut i32` -> `*mut i32`):
src/bcf/header.rs#L120
warning: casting raw pointers to the same type and constness is unnecessary (`*mut i32` -> `*mut i32`)
--> src/bcf/header.rs:120:17
|
120 | imap.as_mut_ptr() as *mut i32,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `imap.as_mut_ptr()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
|
casting raw pointers to the same type and constness is unnecessary (`*const *mut i8` -> `*const *mut i8`):
src/bcf/header.rs#L119
warning: casting raw pointers to the same type and constness is unnecessary (`*const *mut i8` -> `*const *mut i8`)
--> src/bcf/header.rs:119:17
|
119 | name_pointers.as_ptr() as *const *mut c_char,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `name_pointers.as_ptr()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
|
this expression creates a reference which is immediately dereferenced by the compiler:
src/bam/mod.rs#L1291
warning: this expression creates a reference which is immediately dereferenced by the compiler
--> src/bam/mod.rs:1291:32
|
1291 | match self.reader.read(&mut record) {
| ^^^^^^^^^^^ help: change this to: `record`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
= note: `#[warn(clippy::needless_borrow)]` on by default
|
casting to the same type is unnecessary (`usize` -> `usize`):
src/bam/mod.rs#L1125
warning: casting to the same type is unnecessary (`usize` -> `usize`)
--> src/bam/mod.rs:1125:17
|
1125 | ((l_text + 1) as usize).try_into().unwrap(),
| ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(l_text + 1)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
|
useless conversion to the same type: `usize`:
src/bam/mod.rs#L1125
warning: useless conversion to the same type: `usize`
--> src/bam/mod.rs:1125:17
|
1125 | ((l_text + 1) as usize).try_into().unwrap(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: consider removing `.try_into()`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
= note: `#[warn(clippy::useless_conversion)]` on by default
|
unneeded `return` statement:
src/bam/record.rs#L2449
warning: unneeded `return` statement
--> src/bam/record.rs:2449:9
|
2449 | return Some(Ok(data));
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2449 - return Some(Ok(data));
2449 + Some(Ok(data))
|
|
unneeded `return` statement:
src/bam/record.rs#L2415
warning: unneeded `return` statement
--> src/bam/record.rs:2415:9
|
2415 | return self.mod_state.query_type(code);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2415 - return self.mod_state.query_type(code);
2415 + self.mod_state.query_type(code)
|
|
this lifetime isn't used in the function definition:
src/bam/record.rs#L2414
warning: this lifetime isn't used in the function definition
--> src/bam/record.rs:2414:23
|
2414 | pub fn query_type<'a>(&self, code: i32) -> Result<BaseModificationMetadata> {
| ^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes
|
the following explicit lifetimes could be elided: 'a:
src/bam/record.rs#L2402
warning: the following explicit lifetimes could be elided: 'a
--> src/bam/record.rs:2402:12
|
2402 | fn new<'a>(r: &'a Record) -> Result<BaseModificationsIter<'a>> {
| ^^ ^^ ^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
help: elide the lifetimes
|
2402 - fn new<'a>(r: &'a Record) -> Result<BaseModificationsIter<'a>> {
2402 + fn new(r: &Record) -> Result<BaseModificationsIter<'_>> {
|
|
unneeded `return` statement:
src/bam/record.rs#L2389
warning: unneeded `return` statement
--> src/bam/record.rs:2389:23
|
2389 | Err(e) => return Some(Err(e)),
| ^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2389 | Err(e) => Some(Err(e)),
| ~~~~~~~~~~~~
|
unneeded `return` statement:
src/bam/record.rs#L2386
warning: unneeded `return` statement
--> src/bam/record.rs:2386:21
|
2386 | return Some(Ok(data));
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2386 - return Some(Ok(data));
2386 + Some(Ok(data))
|
|
unneeded `return` statement:
src/bam/record.rs#L2383
warning: unneeded `return` statement
--> src/bam/record.rs:2383:21
|
2383 | return None;
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2383 - return None;
2383 + None
|
|
unneeded `return` statement:
src/bam/record.rs#L2366
warning: unneeded `return` statement
--> src/bam/record.rs:2366:9
|
2366 | return self.mod_state.query_type(code);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2366 - return self.mod_state.query_type(code);
2366 + self.mod_state.query_type(code)
|
|
this lifetime isn't used in the function definition:
src/bam/record.rs#L2365
warning: this lifetime isn't used in the function definition
--> src/bam/record.rs:2365:23
|
2365 | pub fn query_type<'a>(&self, code: i32) -> Result<BaseModificationMetadata> {
| ^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes
|
the following explicit lifetimes could be elided: 'a:
src/bam/record.rs#L2356
warning: the following explicit lifetimes could be elided: 'a
--> src/bam/record.rs:2356:12
|
2356 | fn new<'a>(r: &'a Record) -> Result<BaseModificationsPositionIter<'a>> {
| ^^ ^^ ^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
help: elide the lifetimes
|
2356 - fn new<'a>(r: &'a Record) -> Result<BaseModificationsPositionIter<'a>> {
2356 + fn new(r: &Record) -> Result<BaseModificationsPositionIter<'_>> {
|
|
unneeded `return` statement:
src/bam/record.rs#L2331
warning: unneeded `return` statement
--> src/bam/record.rs:2331:17
|
2331 | / return Ok(BaseModificationMetadata {
2332 | | strand,
2333 | | implicit,
2334 | | canonical: canonical.try_into().unwrap(),
2335 | | });
| |__________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2331 ~ Ok(BaseModificationMetadata {
2332 + strand,
2333 + implicit,
2334 + canonical: canonical.try_into().unwrap(),
2335 ~ })
|
|
unneeded `return` statement:
src/bam/record.rs#L2329
warning: unneeded `return` statement
--> src/bam/record.rs:2329:17
|
2329 | return Err(Error::BamBaseModificationTypeNotFound);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2329 - return Err(Error::BamBaseModificationTypeNotFound);
2329 + Err(Error::BamBaseModificationTypeNotFound)
|
|
this lifetime isn't used in the function definition:
src/bam/record.rs#L2314
warning: this lifetime isn't used in the function definition
--> src/bam/record.rs:2314:23
|
2314 | pub fn query_type<'a>(&self, code: i32) -> Result<BaseModificationMetadata> {
| ^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes
= note: `#[warn(clippy::extra_unused_lifetimes)]` on by default
|
unneeded `return` statement:
src/bam/record.rs#L2289
warning: unneeded `return` statement
--> src/bam/record.rs:2289:13
|
2289 | return Ok(ret as usize);
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
2289 - return Ok(ret as usize);
2289 + Ok(ret as usize)
|
|
unneeded `return` statement:
src/bam/record.rs#L2261
warning: unneeded `return` statement
--> src/bam/record.rs:2261:9
|
2261 | return Ok(bm);
| ^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
= note: `#[warn(clippy::needless_return)]` on by default
help: remove `return`
|
2261 - return Ok(bm);
2261 + Ok(bm)
|
|
the following explicit lifetimes could be elided: 'a:
src/bam/record.rs#L2237
warning: the following explicit lifetimes could be elided: 'a
--> src/bam/record.rs:2237:12
|
2237 | fn new<'a>(r: &'a Record) -> Result<BaseModificationState<'a>> {
| ^^ ^^ ^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
= note: `#[warn(clippy::needless_lifetimes)]` on by default
help: elide the lifetimes
|
2237 - fn new<'a>(r: &'a Record) -> Result<BaseModificationState<'a>> {
2237 + fn new(r: &Record) -> Result<BaseModificationState<'_>> {
|
|
unsafe function's docs miss `# Safety` section:
src/bam/record.rs#L1620
warning: unsafe function's docs miss `# Safety` section
--> src/bam/record.rs:1620:5
|
1620 | pub unsafe fn decoded_base_unchecked(&self, i: usize) -> u8 {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
|
unsafe function's docs miss `# Safety` section:
src/bam/record.rs#L1612
warning: unsafe function's docs miss `# Safety` section
--> src/bam/record.rs:1612:5
|
1612 | pub unsafe fn encoded_base_unchecked(&self, i: usize) -> u8 {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
= note: `#[warn(clippy::missing_safety_doc)]` on by default
|
casting raw pointers to the same type and constness is unnecessary (`*mut u8` -> `*mut u8`):
src/bam/record.rs#L817
warning: casting raw pointers to the same type and constness is unnecessary (`*mut u8` -> `*mut u8`)
--> src/bam/record.rs:817:21
|
817 | [v].as_mut_ptr() as *mut u8,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `[v].as_mut_ptr()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
|
casting raw pointers to the same type and constness is unnecessary (`*mut u8` -> `*mut u8`):
src/bam/record.rs#L803
warning: casting raw pointers to the same type and constness is unnecessary (`*mut u8` -> `*mut u8`)
--> src/bam/record.rs:803:21
|
803 | [v].as_mut_ptr() as *mut u8,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `[v].as_mut_ptr()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
= note: `#[warn(clippy::unnecessary_cast)]` on by default
|
this item has comments with 4 forward slashes (`////`). These look like doc comments, but they aren't:
src/bam/ext.rs#L1
warning: this item has comments with 4 forward slashes (`////`). These look like doc comments, but they aren't
--> src/bam/ext.rs:1:1
|
1 | / //// Copyright 2019 Johannes Köster and Florian Finkernagel.
2 | | // Licensed under the MIT license (http://opensource.org/licenses/MIT)
3 | | // This file may not be copied, modified, or distributed
4 | | // except according to those terms.
... |
7 | |
8 | | use crate::bam;
| |_
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#four_forward_slashes
= note: `#[warn(clippy::four_forward_slashes)]` on by default
help: make this a doc comment by removing one `/`
|
1 + /// Copyright 2019 Johannes Köster and Florian Finkernagel.
|
|
field `hts_format` is never read:
src/tbx/mod.rs#L94
warning: field `hts_format` is never read
--> src/tbx/mod.rs:94:5
|
87 | pub struct Reader {
| ------ field in this struct
...
94 | hts_format: htslib::htsExactFormat,
| ^^^^^^^^^^
|
= note: `Reader` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
|
field `buffer` is never read:
src/bcf/record.rs#L134
warning: field `buffer` is never read
--> src/bcf/record.rs:134:5
|
132 | pub struct BufferBacked<'a, T: 'a + fmt::Debug, B: Borrow<Buffer> + 'a> {
| ------------ field in this struct
133 | value: T,
134 | buffer: B,
| ^^^^^^
|
= note: `BufferBacked` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
= note: `#[warn(dead_code)]` on by default
|
unnecessary parentheses around function argument:
src/bam/mod.rs#L1395
warning: unnecessary parentheses around function argument
--> src/bam/mod.rs:1395:45
|
1395 | let rec = htslib::sam_hdr_parse((l_text + 1), text as *const c_char);
| ^ ^
|
= note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
|
1395 - let rec = htslib::sam_hdr_parse((l_text + 1), text as *const c_char);
1395 + let rec = htslib::sam_hdr_parse(l_text + 1, text as *const c_char);
|
|