mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-24 20:28:06 +02:00
Refactor error handling with NyxResult and enhance debugging
- Replaced `Result` with `NyxResult` across the codebase for consistent error management. - Enhanced `NyxError` with new variants and utility conversions for better flexibility. - Added detailed `tracing::debug` logs in `file.rs` and `walk.rs` for improved traceability. - Simplified conditionals and improved path handling in `file.rs`. - Refined severity filtering logic in `scan.rs`.
This commit is contained in:
parent
0a66a0ae2d
commit
bd788a8373
9 changed files with 81 additions and 43 deletions
34
src/file.rs
34
src/file.rs
|
|
@ -14,6 +14,7 @@ pub(crate) fn run_rules_on_file(
|
|||
path: &Path,
|
||||
cfg: &Config,
|
||||
) -> NyxResult<Vec<Diag>> {
|
||||
tracing::debug!("Running rules on: {}", path.display());
|
||||
let bytes = std::fs::read(path)?;
|
||||
|
||||
// Fast binary-file guard (skip if >1% NULs)
|
||||
|
|
@ -21,22 +22,17 @@ pub(crate) fn run_rules_on_file(
|
|||
return Ok(vec![]);
|
||||
}
|
||||
|
||||
let lang_name = match lowercase_ext(path) {
|
||||
Some(l) => l,
|
||||
None => return Ok(vec![]),
|
||||
};
|
||||
|
||||
let ts_lang = match lang_name {
|
||||
"rs" => Language::from(tree_sitter_rust::LANGUAGE),
|
||||
"c" => Language::from(tree_sitter_c::LANGUAGE),
|
||||
"cpp" => Language::from(tree_sitter_cpp::LANGUAGE),
|
||||
"java"=> Language::from(tree_sitter_java::LANGUAGE),
|
||||
"go" => Language::from(tree_sitter_go::LANGUAGE),
|
||||
"php" => Language::from(tree_sitter_php::LANGUAGE_PHP),
|
||||
"py" => Language::from(tree_sitter_python::LANGUAGE),
|
||||
"ts" => Language::from(tree_sitter_typescript::LANGUAGE_TYPESCRIPT),
|
||||
"js" => Language::from(tree_sitter_javascript::LANGUAGE),
|
||||
_ => return Ok(vec![]),
|
||||
let (ts_lang, lang_slug) = match lowercase_ext(path) {
|
||||
Some("rs") => (Language::from(tree_sitter_rust::LANGUAGE), "rust"),
|
||||
Some("c") => (Language::from(tree_sitter_c::LANGUAGE), "c"),
|
||||
Some("cpp") => (Language::from(tree_sitter_cpp::LANGUAGE), "cpp"),
|
||||
Some("java")=> (Language::from(tree_sitter_java::LANGUAGE), "java"),
|
||||
Some("go") => (Language::from(tree_sitter_go::LANGUAGE), "go"),
|
||||
Some("php") => (Language::from(tree_sitter_php::LANGUAGE_PHP), "php"),
|
||||
Some("py") => (Language::from(tree_sitter_python::LANGUAGE), "python"),
|
||||
Some("ts") => (Language::from(tree_sitter_typescript::LANGUAGE_TYPESCRIPT), "typescript"),
|
||||
Some("js") => (Language::from(tree_sitter_javascript::LANGUAGE), "javascript"),
|
||||
_ => return Ok(vec![]),
|
||||
};
|
||||
|
||||
let _tree = PARSER.with(|cell| {
|
||||
|
|
@ -48,12 +44,12 @@ pub(crate) fn run_rules_on_file(
|
|||
|
||||
let root = _tree.root_node();
|
||||
|
||||
let compiled = query_cache::for_lang(lang_name, ts_lang);
|
||||
let compiled = query_cache::for_lang(lang_slug, ts_lang);
|
||||
let mut cursor = QueryCursor::new();
|
||||
let mut out = Vec::new();
|
||||
|
||||
for cq in compiled.iter() {
|
||||
if cfg.scanner.min_severity > cq.meta.severity {
|
||||
if cfg.scanner.min_severity <= cq.meta.severity {
|
||||
continue;
|
||||
}
|
||||
let mut matches = cursor.matches(&cq.query, root, &*bytes);
|
||||
|
|
@ -69,6 +65,6 @@ pub(crate) fn run_rules_on_file(
|
|||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(out)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue