mirror of https://github.com/astral-sh/ruff
Add error messages
This commit is contained in:
parent
bd2e159ceb
commit
92238b4138
|
|
@ -3,13 +3,11 @@ use std::time::Instant;
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use clap::{Parser, ValueHint};
|
use clap::{Parser, ValueHint};
|
||||||
|
use log::{error, info};
|
||||||
use log::info;
|
|
||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
use walkdir::{DirEntry, WalkDir};
|
|
||||||
|
|
||||||
use rust_python_linter::linter::check_path;
|
use rust_python_linter::linter::check_path;
|
||||||
use rust_python_linter::message::Message;
|
use rust_python_linter::message::Message;
|
||||||
|
use walkdir::{DirEntry, WalkDir};
|
||||||
|
|
||||||
fn set_up_logging(verbose: bool) -> Result<()> {
|
fn set_up_logging(verbose: bool) -> Result<()> {
|
||||||
fern::Dispatch::new()
|
fern::Dispatch::new()
|
||||||
|
|
@ -74,7 +72,12 @@ fn main() -> Result<()> {
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
let messages: Vec<Message> = files
|
let messages: Vec<Message> = files
|
||||||
.par_iter()
|
.par_iter()
|
||||||
.map(|entry| check_path(entry.path()).unwrap())
|
.map(|entry| {
|
||||||
|
check_path(entry.path()).unwrap_or_else(|e| {
|
||||||
|
error!("Failed to check {}: {e:?}", entry.path().to_string_lossy());
|
||||||
|
vec![]
|
||||||
|
})
|
||||||
|
})
|
||||||
.flatten()
|
.flatten()
|
||||||
.collect();
|
.collect();
|
||||||
let duration = start.elapsed();
|
let duration = start.elapsed();
|
||||||
|
|
|
||||||
29
src/cache.rs
29
src/cache.rs
|
|
@ -2,6 +2,8 @@ use std::borrow::Cow;
|
||||||
use std::os::unix::fs::MetadataExt;
|
use std::os::unix::fs::MetadataExt;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
use cacache::Error::EntryNotFound;
|
||||||
|
use log::error;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::message::Message;
|
use crate::message::Message;
|
||||||
|
|
@ -33,19 +35,21 @@ fn cache_key(path: &Path) -> Cow<str> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(path: &Path) -> Option<Vec<Message>> {
|
pub fn get(path: &Path) -> Option<Vec<Message>> {
|
||||||
if let Ok(encoded) = cacache::read_sync(cache_dir(), cache_key(path)) {
|
match cacache::read_sync(cache_dir(), cache_key(path)) {
|
||||||
if let Ok(file_metadata) = path.metadata() {
|
Ok(encoded) => match path.metadata() {
|
||||||
if let Ok(CheckResult { metadata, messages }) =
|
Ok(m) => match bincode::deserialize::<CheckResult>(&encoded[..]) {
|
||||||
bincode::deserialize::<CheckResult>(&encoded[..])
|
Ok(CheckResult { metadata, messages }) => {
|
||||||
{
|
if m.size() == metadata.size && m.mtime() == metadata.mtime {
|
||||||
if file_metadata.size() == metadata.size && file_metadata.mtime() == metadata.mtime
|
|
||||||
{
|
|
||||||
return Some(messages);
|
return Some(messages);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Err(e) => error!("Failed to deserialize encoded cache entry: {e:?}"),
|
||||||
|
},
|
||||||
|
Err(e) => error!("Failed to read metadata from path: {e:?}"),
|
||||||
|
},
|
||||||
|
Err(EntryNotFound(_, _)) => {}
|
||||||
|
Err(e) => error!("Failed to read from cache: {e:?}"),
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -58,10 +62,13 @@ pub fn set(path: &Path, messages: &[Message]) {
|
||||||
},
|
},
|
||||||
messages,
|
messages,
|
||||||
};
|
};
|
||||||
let _ = cacache::write_sync(
|
match cacache::write_sync(
|
||||||
cache_dir(),
|
cache_dir(),
|
||||||
cache_key(path),
|
cache_key(path),
|
||||||
bincode::serialize(&check_result).unwrap(),
|
bincode::serialize(&check_result).unwrap(),
|
||||||
);
|
) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => error!("Failed to write to cache: {e:?}"),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,9 @@ struct CheckResult {
|
||||||
pub fn check_path(path: &Path) -> Result<Vec<Message>> {
|
pub fn check_path(path: &Path) -> Result<Vec<Message>> {
|
||||||
// TODO(charlie): These specific files are causing a stack overflow.
|
// TODO(charlie): These specific files are causing a stack overflow.
|
||||||
if path.to_string_lossy().eq_ignore_ascii_case(
|
if path.to_string_lossy().eq_ignore_ascii_case(
|
||||||
"../../spring-experiments/spr_experiments/spr_experiments/assayworks/experiments/order_20220204/pipeline_steps.py") ||
|
"../spring-experiments/spr_experiments/spr_experiments/assayworks/experiments/order_20220204/pipeline_steps.py") ||
|
||||||
path.to_string_lossy().eq_ignore_ascii_case
|
path.to_string_lossy().eq_ignore_ascii_case
|
||||||
( "../../spring-experiments/spr_platform/spr_platform/data_index/bigquery_index.py")
|
( "../spring-experiments/spr_platform/spr_platform/data_index/bigquery_index.py")
|
||||||
{
|
{
|
||||||
return Ok(vec![]);
|
return Ok(vec![]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
|
use std::fmt;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use colored::Colorize;
|
use colored::Colorize;
|
||||||
use rustpython_parser::ast::Location;
|
use rustpython_parser::ast::Location;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fmt;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
#[serde(remote = "Location")]
|
#[serde(remote = "Location")]
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
use anyhow::Result;
|
|
||||||
use rustpython_parser::ast::Suite;
|
|
||||||
use rustpython_parser::parser;
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{BufReader, Read};
|
use std::io::{BufReader, Read};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
use anyhow::Result;
|
||||||
|
use rustpython_parser::ast::Suite;
|
||||||
|
use rustpython_parser::parser;
|
||||||
|
|
||||||
pub fn parse(path: &Path) -> Result<Suite> {
|
pub fn parse(path: &Path) -> Result<Suite> {
|
||||||
let file = File::open(path)?;
|
let file = File::open(path)?;
|
||||||
let mut buf_reader = BufReader::new(file);
|
let mut buf_reader = BufReader::new(file);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue