Function rustc_tools::with_lints

source ·
pub fn with_lints<F: Fn(&mut LintStore) + Send + Sync + 'static>(
    args: &[String],
    tracked_files: Vec<String>,
    callback: F
) -> Result<(), ErrorGuaranteed>
Expand description

If you want to create a linter, this the function you want to use.

  • args is what is provided to the compiler.
  • tracked_files is the files which will trigger a re-compilation if they are modified.
  • callback is called when everything is setup. This is where you will register your lints before they are run by rustc directly. It provides a mutable reference to the LintStore type.

Take a look at the examples/lint.rs file if you want an example on how to create lints.

VERY IMPORTANT TO NOTE: if you want to run this code on a crate with dependencies, you’ll need to pass the according options so that rustc knows where to look for them. otherwise it will simply fail to compile and the callback won’t be called. A good example of the list of the expected arguments can be seen when you run cargo build -v.

Take a look at cargo_integration and at rustc-tools-example to see how to write a cargo integration.