The changes in this commit were generated by running: for f in $(find src -name '*.rs'); do sed -Ei 's/use crate::registry::.*;/\0use crate::violations;/g' $f; done for f in $(find src -name '*.rs'); do sed -Ei 's/CheckKind::([A-Z])/violations::\1/g' $f; done git checkout src/registry.rs src/lib.rs src/lib_wasm.rs src/violations.rs cargo +nightly fmt
54 lines
2.1 KiB
Rust
54 lines
2.1 KiB
Rust
use rustpython_ast::{Constant, Expr, ExprKind};
|
|
|
|
use crate::ast::types::Range;
|
|
use crate::checkers::ast::Checker;
|
|
use crate::registry::{Check, CheckCode, CheckKind};
|
|
use crate::violations;
|
|
|
|
/// EM101, EM102, EM103
|
|
pub fn string_in_exception(checker: &mut Checker, exc: &Expr) {
|
|
if let ExprKind::Call { args, .. } = &exc.node {
|
|
if let Some(first) = args.first() {
|
|
match &first.node {
|
|
// Check for string literals
|
|
ExprKind::Constant {
|
|
value: Constant::Str(string),
|
|
..
|
|
} => {
|
|
if checker.settings.enabled.contains(&CheckCode::EM101) {
|
|
if string.len() > checker.settings.flake8_errmsg.max_string_length {
|
|
checker.checks.push(Check::new(
|
|
violations::RawStringInException,
|
|
Range::from_located(first),
|
|
));
|
|
}
|
|
}
|
|
}
|
|
// Check for f-strings
|
|
ExprKind::JoinedStr { .. } => {
|
|
if checker.settings.enabled.contains(&CheckCode::EM102) {
|
|
checker.checks.push(Check::new(
|
|
violations::FStringInException,
|
|
Range::from_located(first),
|
|
));
|
|
}
|
|
}
|
|
// Check for .format() calls
|
|
ExprKind::Call { func, .. } => {
|
|
if checker.settings.enabled.contains(&CheckCode::EM103) {
|
|
if let ExprKind::Attribute { value, attr, .. } = &func.node {
|
|
if attr == "format" && matches!(value.node, ExprKind::Constant { .. }) {
|
|
checker.checks.push(Check::new(
|
|
violations::DotFormatInException,
|
|
Range::from_located(first),
|
|
));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
}
|
|
}
|