-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add lint for pub fns returning a
Result
without documenting errors
The Rust Book recommends that functions that return a `Result` type have a doc comment with an `# Errors` section describing the kind of errors that can be returned (https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html#commonly-used-sections). This change adds a lint to enforce this. The lint is allow by default; it can be enabled with `#![warn(clippy::missing_errors_doc)]`. Closes #4854.
- Loading branch information
1 parent
ff1607e
commit f5d0a45
Showing
7 changed files
with
202 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
#![warn(clippy::missing_errors_doc)] | ||
|
||
use std::io; | ||
|
||
pub fn pub_fn_missing_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
|
||
/// This is not sufficiently documented. | ||
pub fn pub_fn_returning_io_result() -> io::Result<()> { | ||
unimplemented!(); | ||
} | ||
|
||
/// # Errors | ||
/// A description of the errors goes here. | ||
pub fn pub_fn_with_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
|
||
/// This function doesn't require the documentation because it is private | ||
fn priv_fn_missing_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
|
||
pub struct Struct1; | ||
|
||
impl Struct1 { | ||
/// This is not sufficiently documented. | ||
pub fn pub_method_missing_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
|
||
/// # Errors | ||
/// A description of the errors goes here. | ||
pub fn pub_method_with_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
|
||
/// This function doesn't require the documentation because it is private. | ||
fn priv_method_missing_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
} | ||
|
||
pub trait Trait1 { | ||
/// This is not sufficiently documented. | ||
fn trait_method_missing_errors_header() -> Result<(), ()>; | ||
|
||
/// # Errors | ||
/// A description of the errors goes here. | ||
fn trait_method_with_errors_header() -> Result<(), ()>; | ||
} | ||
|
||
impl Trait1 for Struct1 { | ||
fn trait_method_missing_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
|
||
fn trait_method_with_errors_header() -> Result<(), ()> { | ||
unimplemented!(); | ||
} | ||
} | ||
|
||
fn main() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
error: docs for function returning `Result` missing `# Errors` section | ||
--> $DIR/doc_errors.rs:5:1 | ||
| | ||
LL | / pub fn pub_fn_missing_errors_header() -> Result<(), ()> { | ||
LL | | unimplemented!(); | ||
LL | | } | ||
| |_^ | ||
| | ||
= note: `-D clippy::missing-errors-doc` implied by `-D warnings` | ||
|
||
error: docs for function returning `Result` missing `# Errors` section | ||
--> $DIR/doc_errors.rs:10:1 | ||
| | ||
LL | / pub fn pub_fn_returning_io_result() -> io::Result<()> { | ||
LL | | unimplemented!(); | ||
LL | | } | ||
| |_^ | ||
|
||
error: docs for function returning `Result` missing `# Errors` section | ||
--> $DIR/doc_errors.rs:29:5 | ||
| | ||
LL | / pub fn pub_method_missing_errors_header() -> Result<(), ()> { | ||
LL | | unimplemented!(); | ||
LL | | } | ||
| |_____^ | ||
|
||
error: docs for function returning `Result` missing `# Errors` section | ||
--> $DIR/doc_errors.rs:47:5 | ||
| | ||
LL | fn trait_method_missing_errors_header() -> Result<(), ()>; | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: aborting due to 4 previous errors | ||
|