fn main() {
println!("ShellSafetyBench CWE Taxonomy Mapping");
println!("=====================================\n");
for m in bashrs::corpus::cwe_mapping::CWE_MAPPINGS {
println!(
" {} → {} (CVSS {:.1} {}) — {}",
m.rule, m.cwe, m.cvss_score, m.cvss_severity, m.owasp
);
}
println!("\nOOD CWEs (eval-only, not in linter):");
for o in bashrs::corpus::cwe_mapping::OOD_CWES {
println!(" {} — {} (CVSS {:.1})", o.cwe, o.name, o.cvss_score);
}
println!("\nLookup SEC006:");
if let Some(m) = bashrs::corpus::cwe_mapping::lookup_rule("SEC006") {
println!(
" {} → {} ({:.1} {}) — {}",
m.rule, m.cwe, m.cvss_score, m.cvss_severity, m.owasp
);
}
println!("\n{}", bashrs::corpus::cwe_mapping::summary());
assert!(
bashrs::corpus::cwe_mapping::verify_ood_disjoint(),
"OOD CWEs must not overlap with linter CWEs"
);
println!("OOD disjoint check: PASSED");
}