#![cfg_attr(coverage_nightly, coverage(off))]
use super::gate::SatdResult;
use regex::Regex;
use std::sync::LazyLock;
static SATD_PATTERNS: LazyLock<Vec<(&str, Regex)>> = LazyLock::new(|| {
vec![
(
"TODO",
Regex::new(r"\bTODO\b").expect("static regex pattern '\\bTODO\\b' is valid"),
),
(
"FIXME",
Regex::new(r"\bFIXME\b").expect("static regex pattern '\\bFIXME\\b' is valid"),
),
(
"HACK",
Regex::new(r"\bHACK\b").expect("static regex pattern '\\bHACK\\b' is valid"),
),
(
"XXX",
Regex::new(r"\bXXX\b").expect("static regex pattern '\\bXXX\\b' is valid"),
),
(
"REFACTOR",
Regex::new(r"\bREFACTOR\b").expect("static regex pattern '\\bREFACTOR\\b' is valid"),
),
(
"OPTIMIZE",
Regex::new(r"\bOPTIMIZE\b").expect("static regex pattern '\\bOPTIMIZE\\b' is valid"),
),
(
"REVIEW",
Regex::new(r"\bREVIEW\b").expect("static regex pattern '\\bREVIEW\\b' is valid"),
),
(
"DEPRECATED",
Regex::new(r"\bDEPRECATED\b")
.expect("static regex pattern '\\bDEPRECATED\\b' is valid"),
),
(
"TEMPORARY",
Regex::new(r"\bTEMPORARY\b").expect("static regex pattern '\\bTEMPORARY\\b' is valid"),
),
]
});
static EXTENDED_PATTERNS: LazyLock<Vec<(&str, Regex)>> = LazyLock::new(|| {
vec![
(
"PLACEHOLDER",
Regex::new(r"(?i)\bplaceholder\b").expect("valid regex"),
),
("STUB", Regex::new(r"(?i)\bstub\b").expect("valid regex")),
(
"SIMPLIFIED",
Regex::new(r"(?i)\bsimplified\b").expect("valid regex"),
),
(
"FOR_DEMO",
Regex::new(r"(?i)\b(for\s+)?demonstrat(e|ion)\b").expect("valid regex"),
),
(
"MOCK",
Regex::new(r"(?i)\b(mock|dummy|fake)\b").expect("valid regex"),
),
(
"HARDCODED",
Regex::new(r"(?i)\bhardcoded\b").expect("valid regex"),
),
(
"FOR_NOW",
Regex::new(r"(?i)\bfor\s+now\b").expect("valid regex"),
),
("WIP", Regex::new(r"\bWIP\b").expect("valid regex")),
(
"SKIP",
Regex::new(r"(?i)\b(skip|bypass)\s+(for\s+now|this|validation)\b")
.expect("valid regex"),
),
]
});
pub struct SatdDetector {
patterns: Vec<(&'static str, Regex)>,
extended: bool,
}
impl Default for SatdDetector {
fn default() -> Self {
Self::new()
}
}
include!("satd_detection.rs");
include!("satd_tests.rs");