sniff-cli 0.1.3

An exhaustive LLM-backed slop finder for codebases
Documentation
fn is_assignment_comparison(trimmed: &str) -> bool {
    trimmed.contains("==")
        || trimmed.contains("!=")
        || trimmed.contains(">=")
        || trimmed.contains("<=")
}

fn is_assignment_name_like(text: &str) -> bool {
    text.chars()
        .all(|ch| ch.is_ascii_uppercase() || ch.is_ascii_digit() || ch == '_' || ch == '.')
}

fn is_assignment_rhs_alias(rhs: &str) -> bool {
    let rhs_lower = rhs.to_lowercase();
    rhs_lower.starts_with("_")
        || rhs_lower.contains(".")
        || rhs_lower.contains(" as ")
        || rhs_lower.ends_with(")")
        || rhs_lower.ends_with("}")
        || rhs_lower.ends_with("]")
}

pub fn is_wrapper_assignment(trimmed: &str) -> bool {
    let Some((lhs_raw, rhs_raw)) = trimmed.split_once('=') else {
        return false;
    };

    if is_assignment_comparison(trimmed) {
        return false;
    }

    let lhs = lhs_raw.trim();
    let rhs = rhs_raw.trim().trim_end_matches(',');
    if lhs.is_empty() || rhs.is_empty() {
        return false;
    }

    if lhs.starts_with("__all__") {
        return true;
    }

    if rhs.contains('(') {
        return false;
    }

    let rhs_is_alias = is_assignment_rhs_alias(rhs);
    let rhs_is_const = is_assignment_name_like(rhs);
    let lhs_is_const = is_assignment_name_like(lhs);

    lhs_is_const || rhs_is_alias || rhs_is_const
}