Conditional compilation for configuration file? · Issue #11433 · rust-lang/rust-clippy (original) (raw)

Some lints that are configured via clippy.toml may need to react to conditional compilation.

For instance, for disallowed_macros, a project may want to warn only about a particular macro in some configurations (e.g. CI vs. development).

It could also be useful if Clippy were to identify unexpected paths to prevent mistakes (#11432), since it would allow the user to e.g. remove a given macro from the list if the macro is compiled out.

A workaround could be users generating Clippy's config file on the fly.

Perhaps Clippy could instead allow to be configured within the Rust source code (step-by-step), so that the #[cfg] syntax/machinery is reused, but I imagine there is a reason it was not done there (e.g. workspaces sharing config easily?), e.g.

// m1 always disallowed. #[clippy_config(disallowed_macros, "m1")]

// m2 only disallowed if X. #[cfg(X)] #[clippy_config(disallowed_macros, "m2")]