Update lint description and add help section
Co-authored-by: Weihang Lo <me@weihanglo.tw>
This commit is contained in:
parent
099d610640
commit
4eb6ccc973
@ -1,4 +1,4 @@
|
||||
use clippy_utils::diagnostics::span_lint;
|
||||
use clippy_utils::diagnostics::span_lint_and_help;
|
||||
use rustc_ast::ast;
|
||||
use rustc_ast::{
|
||||
token::{Token, TokenKind},
|
||||
@ -13,19 +13,23 @@
|
||||
/// Checks assertions without a custom panic message.
|
||||
///
|
||||
/// ### Why is this bad?
|
||||
/// If the assertion fails, the custom message may make it easier to understand what went wrong.
|
||||
/// Without a good custom message, it'd be hard to understand what went wrong when the assertion fails.
|
||||
/// A good custom message should be more about why the failure of the assertion is problematic
|
||||
/// and not what is failed because the assertion already conveys that.
|
||||
///
|
||||
/// ### Example
|
||||
/// ```rust
|
||||
/// let threshold = 50;
|
||||
/// let num = 42;
|
||||
/// assert!(num < threshold);
|
||||
/// # struct Service { ready: bool }
|
||||
/// fn call(service: Service) {
|
||||
/// assert!(service.ready);
|
||||
/// }
|
||||
/// ```
|
||||
/// Use instead:
|
||||
/// ```rust
|
||||
/// let threshold = 50;
|
||||
/// let num = 42;
|
||||
/// assert!(num < threshold, "{num} is lower than threshold ({threshold})");
|
||||
/// # struct Service { ready: bool }
|
||||
/// fn call(service: Service) {
|
||||
/// assert!(service.ready, "`service.poll_ready()` must be called first to ensure that service is ready to receive requests");
|
||||
/// }
|
||||
/// ```
|
||||
#[clippy::version = "1.69.0"]
|
||||
pub MISSING_ASSERT_MESSAGE,
|
||||
@ -56,11 +60,13 @@ fn check_mac(&mut self, cx: &EarlyContext<'_>, mac_call: &ast::MacCall) {
|
||||
let num_separators = num_commas_on_arguments(mac_call);
|
||||
|
||||
if num_separators < num_separators_needed {
|
||||
span_lint(
|
||||
span_lint_and_help(
|
||||
cx,
|
||||
MISSING_ASSERT_MESSAGE,
|
||||
mac_call.span(),
|
||||
"assert without any message",
|
||||
None,
|
||||
"consider describing why the failing assert is problematic",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ error: assert without any message
|
||||
LL | assert!(foo());
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
= note: `-D clippy::missing-assert-message` implied by `-D warnings`
|
||||
|
||||
error: assert without any message
|
||||
@ -11,90 +12,120 @@ error: assert without any message
|
||||
|
|
||||
LL | assert_eq!(foo(), foo());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:16:5
|
||||
|
|
||||
LL | assert_ne!(foo(), foo());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:17:5
|
||||
|
|
||||
LL | debug_assert!(foo());
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:18:5
|
||||
|
|
||||
LL | debug_assert_eq!(foo(), foo());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:19:5
|
||||
|
|
||||
LL | debug_assert_ne!(foo(), foo());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:24:5
|
||||
|
|
||||
LL | assert!(bar!(true));
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:25:5
|
||||
|
|
||||
LL | assert!(bar!(true, false));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:26:5
|
||||
|
|
||||
LL | assert_eq!(bar!(true), foo());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:27:5
|
||||
|
|
||||
LL | assert_ne!(bar!(true, true), bar!(true));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:32:5
|
||||
|
|
||||
LL | assert!(foo(),);
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:33:5
|
||||
|
|
||||
LL | assert_eq!(foo(), foo(),);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:34:5
|
||||
|
|
||||
LL | assert_ne!(foo(), foo(),);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:35:5
|
||||
|
|
||||
LL | debug_assert!(foo(),);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:36:5
|
||||
|
|
||||
LL | debug_assert_eq!(foo(), foo(),);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: assert without any message
|
||||
--> $DIR/missing_assert_message.rs:37:5
|
||||
|
|
||||
LL | debug_assert_ne!(foo(), foo(),);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider describing why the failing assert is problematic
|
||||
|
||||
error: aborting due to 16 previous errors
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user