Add negative_cases_from_universe to expand an explicit file-by-rule universe into labeled negatives (enabling TP/FP/TN/FN, not just TP/FP), plus project-eval harness updates in run_project_eval and the score/score_fp/quality-gate helpers.
29 lines
2.3 KiB
JSON
29 lines
2.3 KiB
JSON
{
|
|
"name": "security-bugs",
|
|
"description": "CWE-grounded security benchmark for fold detectors. Grounded in: Das & Lal 2017 (null pointer), Patil 2025 (dead code/integrated analysis), Naug 2020 (useless code), Bailey & Nicholas 2025 (symbolic execution survey). Each bug file contains one confirmed vulnerability of the named kind. Clean files should produce zero findings.",
|
|
"negative": [
|
|
{"kind": "div-by-zero", "files": ["div_by_zero/clean_literal.cpp"], "id": "div-clean-literal"},
|
|
{"kind": "div-by-zero", "files": ["div_by_zero/clean_guarded.cpp"], "id": "div-clean-guarded"},
|
|
{"kind": "div-by-zero", "files": ["complex/clean_nested_guards.cpp"], "id": "div-clean-nested"},
|
|
{"kind": "div-by-zero", "files": ["complex/clean_ternary_div.cpp"], "id": "div-clean-ternary"},
|
|
{"kind": "int-overflow", "files": ["int_overflow/clean_unsigned.cpp"], "id": "oflow-clean-unsigned"},
|
|
{"kind": "oob-access", "files": ["oob/clean_in_bounds.cpp"], "id": "oob-clean-in-bounds"},
|
|
{"kind": "null-deref", "files": ["null_deref/clean_guarded.cpp"], "id": "null-clean-guarded"},
|
|
{"kind": "null-deref", "files": ["null_deref/clean_reassigned.cpp"], "id": "null-clean-reassigned"},
|
|
{"kind": "null-deref", "files": ["complex/clean_ternary.cpp"], "id": "null-clean-ternary"},
|
|
{"kind": "dead-branch", "files": ["clean/clean_reachable.cpp"], "id": "dead-clean-reachable"}
|
|
],
|
|
"expected": [
|
|
{"kind": "null-deref", "files": ["null_deref/bug_direct.cpp"], "id": "null-direct"},
|
|
{"kind": "null-deref", "files": ["null_deref/bug_callee.cpp"], "id": "null-callee"},
|
|
{"kind": "div-by-zero", "files": ["div_by_zero/bug_literal.cpp"], "id": "div-literal"},
|
|
{"kind": "div-by-zero", "files": ["div_by_zero/bug_variable.cpp"],"id": "div-variable"},
|
|
{"kind": "int-overflow","files": ["int_overflow/bug_add.cpp"], "id": "oflow-add"},
|
|
{"kind": "int-overflow","files": ["int_overflow/bug_mul.cpp"], "id": "oflow-mul"},
|
|
{"kind": "oob-access", "files": ["oob/bug_constant.cpp"],"id": "oob-constant"},
|
|
{"kind": "oob-access", "files": ["oob/bug_symbolic.cpp"],"id": "oob-symbolic"},
|
|
{"kind": "dead-branch", "files": ["dead/bug_if_false.cpp"],"id": "dead-if-false"},
|
|
{"kind": "int-overflow","files": ["template/bug_tpl_add.cpp"], "id": "oflow-tpl"},
|
|
{"kind": "int-overflow","files": ["loop/bug_for_overflow.cpp"],"id":"oflow-loop"}
|
|
]
|
|
}
|