use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use crate::security::vulnerability::Severity;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SastFinding {
pub rule_id: String,
pub severity: Severity,
pub message: String,
pub file_path: PathBuf,
pub line: usize,
pub column: Option<usize>,
pub end_line: Option<usize>,
pub end_column: Option<usize>,
pub code_snippet: Option<String>,
pub fix_suggestion: Option<String>,
pub category: String,
pub cwe_ids: Vec<String>,
pub source: String,
pub language: String,
}
impl SastFinding {
pub fn summary(&self) -> String {
format!(
"[{}] {} ({}:{})",
self.severity,
self.rule_id,
self.file_path.display(),
self.line,
)
}
pub fn meets_severity_threshold(&self, threshold: &Severity) -> bool {
self.severity.meets_threshold(threshold)
}
}