Auto merge of #5272 - jmeyers35:file_read_lint, r=flip1995
add lint on File::read_to_string and File::read_to_end Adds lint `verbose_file_reads` which checks for use of File::read_to_end and File::read_to_string. Closes https://github.com/rust-lang/rust-clippy/issues/4916 changelog: add lint on File::{read_to_end, read_to_string}
This commit is contained in:
28
tests/ui/verbose_file_reads.rs
Normal file
28
tests/ui/verbose_file_reads.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
#![warn(clippy::verbose_file_reads)]
|
||||
use std::env::temp_dir;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
|
||||
struct Struct;
|
||||
// To make sure we only warn on File::{read_to_end, read_to_string} calls
|
||||
impl Struct {
|
||||
pub fn read_to_end(&self) {}
|
||||
|
||||
pub fn read_to_string(&self) {}
|
||||
}
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
let path = "foo.txt";
|
||||
// Lint shouldn't catch this
|
||||
let s = Struct;
|
||||
s.read_to_end();
|
||||
s.read_to_string();
|
||||
// Should catch this
|
||||
let mut f = File::open(&path)?;
|
||||
let mut buffer = Vec::new();
|
||||
f.read_to_end(&mut buffer)?;
|
||||
// ...and this
|
||||
let mut string_buffer = String::new();
|
||||
f.read_to_string(&mut string_buffer)?;
|
||||
Ok(())
|
||||
}
|
||||
19
tests/ui/verbose_file_reads.stderr
Normal file
19
tests/ui/verbose_file_reads.stderr
Normal file
@@ -0,0 +1,19 @@
|
||||
error: use of `File::read_to_end`
|
||||
--> $DIR/verbose_file_reads.rs:23:5
|
||||
|
|
||||
LL | f.read_to_end(&mut buffer)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `-D clippy::verbose-file-reads` implied by `-D warnings`
|
||||
= help: consider using `fs::read` instead
|
||||
|
||||
error: use of `File::read_to_string`
|
||||
--> $DIR/verbose_file_reads.rs:26:5
|
||||
|
|
||||
LL | f.read_to_string(&mut string_buffer)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider using `fs::read_to_string` instead
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Reference in New Issue
Block a user