1use super::types::{DefectCategory, FindingSeverity};
4
5pub(super) fn base_defect_patterns(
8 pmat_satd_active: bool,
9) -> Vec<(&'static str, DefectCategory, FindingSeverity, f64)> {
10 let mut patterns = Vec::new();
11 if !pmat_satd_active {
12 patterns.extend([
13 ("TODO", DefectCategory::LogicErrors, FindingSeverity::Low, 0.3),
14 ("FIXME", DefectCategory::LogicErrors, FindingSeverity::Medium, 0.5),
15 ("HACK", DefectCategory::LogicErrors, FindingSeverity::Medium, 0.5),
16 ("XXX", DefectCategory::LogicErrors, FindingSeverity::Medium, 0.5),
17 ]);
18 }
19 patterns.extend([
21 ("unwrap()", DefectCategory::LogicErrors, FindingSeverity::Medium, 0.4),
22 ("expect(", DefectCategory::LogicErrors, FindingSeverity::Low, 0.3),
23 ("unsafe {", DefectCategory::MemorySafety, FindingSeverity::High, 0.7),
25 ("transmute", DefectCategory::MemorySafety, FindingSeverity::High, 0.8),
26 ("panic!", DefectCategory::LogicErrors, FindingSeverity::Medium, 0.5),
27 ("unreachable!", DefectCategory::LogicErrors, FindingSeverity::Low, 0.3),
28 ]);
29 patterns
30}
31
32pub(super) fn gpu_and_crosscutting_patterns(
34) -> Vec<(&'static str, DefectCategory, FindingSeverity, f64)> {
35 vec![
36 ("CUDA_ERROR", DefectCategory::GpuKernelBugs, FindingSeverity::Critical, 0.9),
38 ("INVALID_PTX", DefectCategory::GpuKernelBugs, FindingSeverity::Critical, 0.95),
39 ("PTX error", DefectCategory::GpuKernelBugs, FindingSeverity::Critical, 0.9),
40 ("kernel fail", DefectCategory::GpuKernelBugs, FindingSeverity::High, 0.8),
41 ("cuBLAS fallback", DefectCategory::GpuKernelBugs, FindingSeverity::High, 0.7),
42 ("cuDNN fallback", DefectCategory::GpuKernelBugs, FindingSeverity::High, 0.7),
43 (".unwrap_or_else(|_|", DefectCategory::SilentDegradation, FindingSeverity::High, 0.7),
45 ("if let Err(_) =", DefectCategory::SilentDegradation, FindingSeverity::Medium, 0.5),
46 ("Err(_) => {}", DefectCategory::SilentDegradation, FindingSeverity::High, 0.75),
47 ("Ok(_) => {}", DefectCategory::SilentDegradation, FindingSeverity::Medium, 0.4),
48 ("// fallback", DefectCategory::SilentDegradation, FindingSeverity::Medium, 0.5),
49 ("// degraded", DefectCategory::SilentDegradation, FindingSeverity::High, 0.7),
50 ("#[ignore]", DefectCategory::TestDebt, FindingSeverity::High, 0.7),
52 ("// skip", DefectCategory::TestDebt, FindingSeverity::Medium, 0.5),
53 ("// skipped", DefectCategory::TestDebt, FindingSeverity::Medium, 0.5),
54 ("// broken", DefectCategory::TestDebt, FindingSeverity::High, 0.8),
55 ("// fails", DefectCategory::TestDebt, FindingSeverity::High, 0.75),
56 ("// disabled", DefectCategory::TestDebt, FindingSeverity::Medium, 0.6),
57 ("test removed", DefectCategory::TestDebt, FindingSeverity::Critical, 0.9),
58 ("were removed", DefectCategory::TestDebt, FindingSeverity::Critical, 0.9),
59 ("tests hang", DefectCategory::TestDebt, FindingSeverity::Critical, 0.9),
60 ("hang during", DefectCategory::TestDebt, FindingSeverity::High, 0.8),
61 ("compilation hang", DefectCategory::TestDebt, FindingSeverity::High, 0.8),
62 ("hidden_dim >=", DefectCategory::GpuKernelBugs, FindingSeverity::High, 0.7),
64 ("hidden_dim >", DefectCategory::GpuKernelBugs, FindingSeverity::High, 0.7),
65 ("// 1536", DefectCategory::GpuKernelBugs, FindingSeverity::Medium, 0.5),
66 ("// 2048", DefectCategory::GpuKernelBugs, FindingSeverity::Medium, 0.5),
67 ("model dimensions", DefectCategory::GpuKernelBugs, FindingSeverity::Medium, 0.5),
68 ("placeholder", DefectCategory::HiddenDebt, FindingSeverity::High, 0.75),
71 ("stub", DefectCategory::HiddenDebt, FindingSeverity::High, 0.7),
72 ("dummy", DefectCategory::HiddenDebt, FindingSeverity::High, 0.7),
73 ("fake", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.6),
74 ("mock", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.5),
75 ("simplified", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.6),
76 ("for demonstration", DefectCategory::HiddenDebt, FindingSeverity::High, 0.75),
77 ("demo only", DefectCategory::HiddenDebt, FindingSeverity::High, 0.8),
78 ("not implemented", DefectCategory::HiddenDebt, FindingSeverity::Critical, 0.9),
79 ("unimplemented", DefectCategory::HiddenDebt, FindingSeverity::Critical, 0.9),
80 ("temporary", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.6),
81 ("hardcoded", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.5),
82 ("hard-coded", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.5),
83 ("magic number", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.5),
84 ("workaround", DefectCategory::HiddenDebt, FindingSeverity::Medium, 0.6),
85 ("quick fix", DefectCategory::HiddenDebt, FindingSeverity::High, 0.7),
86 ("quick-fix", DefectCategory::HiddenDebt, FindingSeverity::High, 0.7),
87 ("bandaid", DefectCategory::HiddenDebt, FindingSeverity::High, 0.7),
88 ("band-aid", DefectCategory::HiddenDebt, FindingSeverity::High, 0.7),
89 ("kludge", DefectCategory::HiddenDebt, FindingSeverity::High, 0.75),
90 ("tech debt", DefectCategory::HiddenDebt, FindingSeverity::High, 0.8),
91 ("technical debt", DefectCategory::HiddenDebt, FindingSeverity::High, 0.8),
92 ]
93}