lintcheck: filter out messages that come from cargo-metadata errors or contain absolute paths to rustc source files
The latter is especially annoying because the paths would change every time we bumped the pinned nightly version.
This commit is contained in:
parent
8f1cceb6ff
commit
028692b46a
@ -225,13 +225,36 @@ fn run_clippy_lints(&self, cargo_clippy_path: &PathBuf) -> Vec<ClippyWarning> {
|
|||||||
let warnings: Vec<ClippyWarning> = output_lines
|
let warnings: Vec<ClippyWarning> = output_lines
|
||||||
.into_iter()
|
.into_iter()
|
||||||
// get all clippy warnings and ICEs
|
// get all clippy warnings and ICEs
|
||||||
.filter(|line| line.contains("clippy::") || line.contains("internal compiler error: "))
|
.filter(|line| filter_clippy_warnings(&line))
|
||||||
.map(|json_msg| parse_json_message(json_msg, &self))
|
.map(|json_msg| parse_json_message(json_msg, &self))
|
||||||
.collect();
|
.collect();
|
||||||
warnings
|
warnings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// takes a single json-formatted clippy warnings and returns true (we are interested in that line)
|
||||||
|
/// or false (we aren't)
|
||||||
|
fn filter_clippy_warnings(line: &str) -> bool {
|
||||||
|
// we want to collect ICEs because clippy might have crashed.
|
||||||
|
// these are summarized later
|
||||||
|
if line.contains("internal compiler error: ") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// in general, we want all clippy warnings
|
||||||
|
// however due to some kind of bug, sometimes there are absolute paths
|
||||||
|
// to libcore files inside the message
|
||||||
|
// or we end up with cargo-metadata output (https://github.com/rust-lang/rust-clippy/issues/6508)
|
||||||
|
|
||||||
|
// filter out these message to avoid unnecessary noise in the logs
|
||||||
|
if line.contains("clippy::")
|
||||||
|
&& !(line.contains("could not read cargo metadata")
|
||||||
|
|| (line.contains(".rustup") && line.contains("toolchains")))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
/// Builds clippy inside the repo to make sure we have a clippy executable we can use.
|
/// Builds clippy inside the repo to make sure we have a clippy executable we can use.
|
||||||
fn build_clippy() {
|
fn build_clippy() {
|
||||||
Command::new("cargo")
|
Command::new("cargo")
|
||||||
|
Loading…
Reference in New Issue
Block a user