sniff-cli 0.1.1

An exhaustive LLM-backed slop finder for codebases
Documentation
const PREFIXES: &[&str] = &[
    "file",
    "classify",
    "intentional",
    "duplicate",
    "test",
    "contains",
    "starts",
    "is",
    "get",
    "set",
    "build",
    "make",
    "parse",
    "resolve",
    "collect",
    "emit",
    "render",
    "default",
    "json",
    "push",
    "record",
    "scan",
    "normalize",
    "count",
    "match",
    "same",
    "has",
    "method",
    "score",
    "walk",
    "format",
    "as",
];

const SUFFIXES: &[&str] = &[
    "_flags", "_label", "_report", "_helpers", "_helper", "_paths", "_key",
];

fn has_prefix(name: &str) -> bool {
    PREFIXES.iter().any(|prefix| {
        if name == *prefix {
            return true;
        }

        let Some(rest) = name.strip_prefix(prefix) else {
            return false;
        };

        rest.starts_with('_')
            || rest
                .chars()
                .next()
                .map(|ch| ch.is_uppercase())
                .unwrap_or(false)
    })
}

fn has_suffix(lower: &str) -> bool {
    SUFFIXES.iter().any(|suffix| lower.ends_with(suffix))
}

pub fn is_utility_helper_name(name: &str) -> bool {
    let lower = name.to_lowercase();
    has_prefix(name) || has_suffix(&lower) || lower.contains("expands_to")
}