mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-21 20:18:06 +02:00
Add Ruby AST support using tree-sitter-ruby
- Added `tree-sitter-ruby` dependency to `Cargo.toml` and `Cargo.lock`. - Introduced `patterns/ruby.rs` with Ruby-specific AST patterns for vulnerability detection. - Updated `patterns/mod.rs` and `ast.rs` to support Ruby AST parsing and pattern registry initialization.
This commit is contained in:
parent
484f4b6d05
commit
b3870997d7
5 changed files with 156 additions and 17 deletions
|
|
@ -7,6 +7,7 @@ mod java;
|
|||
mod go;
|
||||
mod php;
|
||||
mod python;
|
||||
mod ruby;
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::fmt;
|
||||
|
|
@ -52,20 +53,6 @@ impl FromStr for Severity { // TODO: FIX
|
|||
}
|
||||
}
|
||||
|
||||
// /// How bad / noisy a pattern is considered.
|
||||
// #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, PartialOrd)]
|
||||
// pub enum Severity {
|
||||
// Low,
|
||||
// Medium,
|
||||
// High,
|
||||
// }
|
||||
//
|
||||
// impl Severity {
|
||||
// pub(crate) fn as_db_str(&self) -> &str {
|
||||
// todo!()
|
||||
// }
|
||||
// }
|
||||
|
||||
/// One AST pattern with a tree-sitter query and meta-data.
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub struct Pattern {
|
||||
|
|
@ -108,6 +95,8 @@ static REGISTRY: Lazy<HashMap<&'static str, &'static [Pattern]>> = Lazy::new(||
|
|||
m.insert("php", php::PATTERNS);
|
||||
m.insert("python", python::PATTERNS);
|
||||
m.insert("py", python::PATTERNS);
|
||||
m.insert("ruby", ruby::PATTERNS);
|
||||
m.insert("rb", ruby::PATTERNS);
|
||||
|
||||
tracing::debug!("AST-pattern registry initialised ({} languages)", m.len());
|
||||
|
||||
|
|
@ -121,7 +110,7 @@ pub fn load(lang: &str) -> Vec<Pattern> {
|
|||
let key = lang.to_ascii_lowercase();
|
||||
REGISTRY
|
||||
.get(key.as_str())
|
||||
.copied() // `&'static [Pattern]` → *copy* the slice pointer
|
||||
.unwrap_or(&[]) // unknown lang ⇒ empty slice
|
||||
.to_vec() // caller owns the `Vec`
|
||||
.copied()
|
||||
.unwrap_or(&[])
|
||||
.to_vec()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue