Skip to content

Feat/guard coverage engine#59

Merged
Dnreikronos merged 5 commits into
mainfrom
feat/guard-coverage-engine
Apr 29, 2026
Merged

Feat/guard coverage engine#59
Dnreikronos merged 5 commits into
mainfrom
feat/guard-coverage-engine

Conversation

@Dnreikronos
Copy link
Copy Markdown
Owner

No description provided.

Move EXTERNAL_CALL_PATTERNS, MOCK_TEST_KEYWORDS, is_external_facing,
has_external_call, and is_mock_or_test into constants.rs so they can
be reused by other engines without duplication.
Add bfs_collect helper, transitive_internal_callees (BFS along internal
edges), and external_callers (BFS backward collecting public/external
nodes). These enable the guard engine to detect transitive risk and
bypass paths.
Detect missing, inconsistent, and bypassable reentrancy guards:
- Missing guards on high-risk functions (external + ext call + state write)
- Inconsistent coverage (contract uses guards but skips some functions)
- Bypass paths (internal fn reachable from guarded and unguarded callers)

Includes 12 unit tests covering all detection categories, edge cases,
and filtering behavior.

Closes #58
Hoist CallGraph so guard engine can borrow it, run guard coverage
analysis after call graph stage, track guard_candidates in pipeline
stats, add field to CachedEngineResult, add guard weight (0.55) to
confidence scorer, and bump engine cache version to v5.
@Dnreikronos Dnreikronos self-assigned this Apr 29, 2026
@Dnreikronos Dnreikronos merged commit c1fad47 into main Apr 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant