mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
use a .toml file to list the crates we want to check
Also sort lint results alphabetically.
This commit is contained in:
parent
a9fce6d2d0
commit
588efa7da9
@ -11,8 +11,10 @@ flate2 = "1.0.19"
|
|||||||
itertools = "0.9"
|
itertools = "0.9"
|
||||||
opener = "0.4"
|
opener = "0.4"
|
||||||
regex = "1"
|
regex = "1"
|
||||||
|
serde = {version = "1.0", features = ["derive"]}
|
||||||
shell-escape = "0.1"
|
shell-escape = "0.1"
|
||||||
tar = "0.4.30"
|
tar = "0.4.30"
|
||||||
|
toml = "0.5"
|
||||||
ureq = "2.0.0-rc3"
|
ureq = "2.0.0-rc3"
|
||||||
walkdir = "2"
|
walkdir = "2"
|
||||||
|
|
||||||
|
20
clippy_dev/crater_crates.toml
Normal file
20
clippy_dev/crater_crates.toml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
[crates]
|
||||||
|
# some of these are from cargotest
|
||||||
|
cargo = '0.49.0'
|
||||||
|
iron = '0.6.1'
|
||||||
|
ripgrep = '12.1.1'
|
||||||
|
xsv = '0.13.0'
|
||||||
|
#tokei = '12.0.4'
|
||||||
|
rayon = '1.5.0'
|
||||||
|
serde = '1.0.118'
|
||||||
|
# top 10 crates.io dls
|
||||||
|
bitflags = '1.2.1'
|
||||||
|
libc = '0.2.81'
|
||||||
|
log = '0.4.11'
|
||||||
|
proc-macro2 = '1.0.24'
|
||||||
|
quote = '1.0.7'
|
||||||
|
rand = '0.7.3'
|
||||||
|
rand_core = '0.6.0'
|
||||||
|
regex = '1.3.2'
|
||||||
|
syn = '1.0.54'
|
||||||
|
unicode-xid = '0.2.1'
|
@ -1,16 +1,24 @@
|
|||||||
#![allow(clippy::filter_map)]
|
#![allow(clippy::filter_map)]
|
||||||
|
|
||||||
use crate::clippy_project_root;
|
use crate::clippy_project_root;
|
||||||
use std::path::PathBuf;
|
use serde::{Deserialize, Serialize};
|
||||||
|
use std::collections::HashMap;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
use std::{fs::write, path::PathBuf};
|
||||||
|
|
||||||
// represents an archive we download from crates.io
|
// represents an archive we download from crates.io
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Serialize, Deserialize, Eq, Hash, PartialEq)]
|
||||||
struct KrateSource {
|
struct KrateSource {
|
||||||
version: String,
|
version: String,
|
||||||
name: String,
|
name: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use this to store the crates when interacting with the crates.toml file
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
struct CrateList {
|
||||||
|
crates: HashMap<String, String>,
|
||||||
|
}
|
||||||
|
|
||||||
// represents the extracted sourcecode of a crate
|
// represents the extracted sourcecode of a crate
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Krate {
|
struct Krate {
|
||||||
@ -129,33 +137,25 @@ fn build_clippy() {
|
|||||||
.expect("Failed to build clippy!");
|
.expect("Failed to build clippy!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get a list of KrateSources we want to check from a "crater_crates.toml" file.
|
||||||
|
fn read_crates() -> Vec<KrateSource> {
|
||||||
|
let toml_path = PathBuf::from("clippy_dev/crater_crates.toml");
|
||||||
|
let toml_content: String =
|
||||||
|
std::fs::read_to_string(&toml_path).unwrap_or_else(|_| panic!("Failed to read {}", toml_path.display()));
|
||||||
|
let crate_list: CrateList =
|
||||||
|
toml::from_str(&toml_content).unwrap_or_else(|e| panic!("Failed to parse {}: \n{}", toml_path.display(), e));
|
||||||
|
// parse the hashmap of the toml file into a list of crates
|
||||||
|
crate_list
|
||||||
|
.crates
|
||||||
|
.iter()
|
||||||
|
.map(|(name, version)| KrateSource::new(&name, &version))
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
// the main fn
|
// the main fn
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
let cargo_clippy_path: PathBuf = PathBuf::from("target/debug/cargo-clippy");
|
let cargo_clippy_path: PathBuf = PathBuf::from("target/debug/cargo-clippy");
|
||||||
|
|
||||||
// crates we want to check:
|
|
||||||
let krates: Vec<KrateSource> = vec![
|
|
||||||
// some of these are form cargotest
|
|
||||||
KrateSource::new("cargo", "0.49.0"),
|
|
||||||
KrateSource::new("iron", "0.6.1"),
|
|
||||||
KrateSource::new("ripgrep", "12.1.1"),
|
|
||||||
//KrateSource::new("tokei", "12.0.4"),
|
|
||||||
KrateSource::new("xsv", "0.13.0"),
|
|
||||||
KrateSource::new("serde", "1.0.118"),
|
|
||||||
KrateSource::new("rayon", "1.5.0"),
|
|
||||||
// top 10 crates.io dls
|
|
||||||
KrateSource::new("rand", "0.7.3"),
|
|
||||||
KrateSource::new("syn", "1.0.54"),
|
|
||||||
KrateSource::new("libc", "0.2.81"),
|
|
||||||
KrateSource::new("quote", "1.0.7"),
|
|
||||||
KrateSource::new("rand_core", "0.6.0"),
|
|
||||||
KrateSource::new("unicode-xid", "0.2.1"),
|
|
||||||
KrateSource::new("proc-macro2", "1.0.24"),
|
|
||||||
KrateSource::new("bitflags", "1.2.1"),
|
|
||||||
KrateSource::new("log", "0.4.11"),
|
|
||||||
KrateSource::new("regex", "1.4.2"),
|
|
||||||
];
|
|
||||||
|
|
||||||
println!("Compiling clippy...");
|
println!("Compiling clippy...");
|
||||||
build_clippy();
|
build_clippy();
|
||||||
println!("Done compiling");
|
println!("Done compiling");
|
||||||
@ -168,15 +168,17 @@ pub fn run() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// download and extract the crates, then run clippy on them and collect clippys warnings
|
// download and extract the crates, then run clippy on them and collect clippys warnings
|
||||||
let clippy_lint_results: Vec<Vec<String>> = krates
|
|
||||||
|
let clippy_lint_results: Vec<Vec<String>> = read_crates()
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|krate| krate.download_and_extract())
|
.map(|krate| krate.download_and_extract())
|
||||||
.map(|krate| krate.run_clippy_lints(&cargo_clippy_path))
|
.map(|krate| krate.run_clippy_lints(&cargo_clippy_path))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let all_warnings: Vec<String> = clippy_lint_results.into_iter().flatten().collect();
|
let mut all_warnings: Vec<String> = clippy_lint_results.into_iter().flatten().collect();
|
||||||
|
all_warnings.sort();
|
||||||
|
|
||||||
// save the text into mini-crater/logs.txt
|
// save the text into mini-crater/logs.txt
|
||||||
let text = all_warnings.join("");
|
let text = all_warnings.join("");
|
||||||
std::fs::write("mini-crater/logs.txt", text).unwrap();
|
write("mini-crater/logs.txt", text).unwrap();
|
||||||
}
|
}
|
||||||
|
2542
mini-crater/logs.txt
2542
mini-crater/logs.txt
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user