Move COGNITIVE_COMPLEXITY to use macro again

This commit is contained in:
blyxyas 2024-10-19 17:47:16 +02:00
parent e518d66dc0
commit 3773534f29
3 changed files with 41 additions and 45 deletions

View File

@ -8,44 +8,31 @@
use rustc_ast::ast::Attribute; use rustc_ast::ast::Attribute;
use rustc_hir::intravisit::FnKind; use rustc_hir::intravisit::FnKind;
use rustc_hir::{Body, Expr, ExprKind, FnDecl}; use rustc_hir::{Body, Expr, ExprKind, FnDecl};
use rustc_lint::Level::Allow; use rustc_lint::{LateContext, LateLintPass, LintContext};
use rustc_lint::{LateContext, LateLintPass, Lint, LintContext};
use rustc_session::impl_lint_pass; use rustc_session::impl_lint_pass;
use rustc_span::def_id::LocalDefId; use rustc_span::def_id::LocalDefId;
use rustc_span::{Span, sym}; use rustc_span::{Span, sym};
use crate::LintInfo; declare_clippy_lint! {
/// ### What it does
pub static COGNITIVE_COMPLEXITY: &Lint = &Lint { /// Checks for methods with high cognitive complexity.
name: &"clippy::COGNITIVE_COMPLEXITY", ///
default_level: Allow, /// ### Why is this bad?
desc: "functions that should be split up into multiple functions", /// Methods of high cognitive complexity tend to be hard to
edition_lint_opts: None, /// both read and maintain. Also LLVM will tend to optimize small methods better.
report_in_external_macro: true, ///
future_incompatible: None, /// ### Known problems
is_externally_loaded: true, /// Sometimes it's hard to find a way to reduce the
crate_level_only: false, /// complexity.
eval_always: true, ///
..Lint::default_fields_for_macro() /// ### Example
}; /// You'll see it when you get the warning.
pub(crate) static COGNITIVE_COMPLEXITY_INFO: &'static LintInfo = &LintInfo { #[clippy::version = "1.35.0"]
lint: &COGNITIVE_COMPLEXITY, pub COGNITIVE_COMPLEXITY,
category: crate::LintCategory::Nursery, nursery,
explanation: r"### What it does "functions that should be split up into multiple functions"
Checks for methods with high cognitive complexity. @eval_always = true
}
### Why is this bad?
Methods of high cognitive complexity tend to be hard to both read and maintain.
Also LLVM will tend to optimize small methods better.
### Known problems
Sometimes it's hard to find a way to reduce the complexity.
### Example
You'll see it when you get the warning.",
version: Some("1.35.0"),
location: "clippy_lints/src/cognitive_complexity.rs#L47",
};
pub struct CognitiveComplexity { pub struct CognitiveComplexity {
limit: LimitStack, limit: LimitStack,

View File

@ -8,7 +8,6 @@
/// Ensures that Constant-time Function Evaluation is being done (specifically, MIR lint passes). /// Ensures that Constant-time Function Evaluation is being done (specifically, MIR lint passes).
/// As Clippy deactivates codegen, this lint ensures that CTFE (used in hard errors) is still ran. /// As Clippy deactivates codegen, this lint ensures that CTFE (used in hard errors) is still ran.
#[clippy::version = "1.82.0"]
pub static CLIPPY_CTFE: &Lint = &Lint { pub static CLIPPY_CTFE: &Lint = &Lint {
name: &"clippy::CLIPPY_CTFE", name: &"clippy::CLIPPY_CTFE",
default_level: Deny, default_level: Deny,

View File

@ -9,6 +9,7 @@ macro_rules! declare_clippy_lint {
$desc:literal, $desc:literal,
$version_expr:expr, $version_expr:expr,
$version_lit:literal $version_lit:literal
$(, $eval_always: literal)?
) => { ) => {
rustc_session::declare_tool_lint! { rustc_session::declare_tool_lint! {
$(#[doc = $lit])* $(#[doc = $lit])*
@ -17,6 +18,7 @@ macro_rules! declare_clippy_lint {
$category, $category,
$desc, $desc,
report_in_external_macro:true report_in_external_macro:true
$(, @eval_always = $eval_always)?
} }
pub(crate) static ${concat($lint_name, _INFO)}: &'static crate::LintInfo = &crate::LintInfo { pub(crate) static ${concat($lint_name, _INFO)}: &'static crate::LintInfo = &crate::LintInfo {
@ -33,11 +35,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
restriction, restriction,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Allow, crate::LintCategory::Restriction, $desc, pub $lint_name, Allow, crate::LintCategory::Restriction, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
( (
@ -46,12 +49,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
style, style,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Warn, crate::LintCategory::Style, $desc, pub $lint_name, Warn, crate::LintCategory::Style, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
( (
@ -60,11 +63,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
correctness, correctness,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Deny, crate::LintCategory::Correctness, $desc, pub $lint_name, Deny, crate::LintCategory::Correctness, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
@ -74,11 +78,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
perf, perf,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Warn, crate::LintCategory::Perf, $desc, pub $lint_name, Warn, crate::LintCategory::Perf, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
( (
@ -87,11 +92,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
complexity, complexity,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Warn, crate::LintCategory::Complexity, $desc, pub $lint_name, Warn, crate::LintCategory::Complexity, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
( (
@ -100,11 +106,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
suspicious, suspicious,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Warn, crate::LintCategory::Suspicious, $desc, pub $lint_name, Warn, crate::LintCategory::Suspicious, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
( (
@ -113,11 +120,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
nursery, nursery,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Allow, crate::LintCategory::Nursery, $desc, pub $lint_name, Allow, crate::LintCategory::Nursery, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
( (
@ -126,11 +134,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
pedantic, pedantic,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Allow, crate::LintCategory::Pedantic, $desc, pub $lint_name, Allow, crate::LintCategory::Pedantic, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };
( (
@ -139,11 +148,12 @@ macro_rules! declare_clippy_lint {
pub $lint_name:ident, pub $lint_name:ident,
cargo, cargo,
$desc:literal $desc:literal
$(@eval_always = $eval_always: literal)?
) => { ) => {
declare_clippy_lint! {@ declare_clippy_lint! {@
$(#[doc = $lit])* $(#[doc = $lit])*
pub $lint_name, Allow, crate::LintCategory::Cargo, $desc, pub $lint_name, Allow, crate::LintCategory::Cargo, $desc,
Some($version), $version Some($version), $version $(, $eval_always)?
} }
}; };