Expand description
AST-based constructor detection for Rust
This module enhances name-based constructor detection (Spec 117) with AST analysis to catch non-standard patterns.
§Detection Strategy
- Return Type: Function returns
Self(orResult<Self>,Option<Self>) - Body Pattern: Struct initialization or simple field assignments
- Complexity: Low cyclomatic (≤5), no loops, minimal branching
§Examples Caught
ⓘ
// Non-standard name (missed by name-based)
pub fn create_default_client() -> Self {
Self { timeout: Duration::from_secs(30) }
}
// Builder method (different role)
pub fn set_timeout(mut self, timeout: Duration) -> Self {
self.timeout = timeout;
self
}§Fallback
If AST unavailable (syntax errors, unsupported language):
- Falls back to name-based detection (Spec 117)
- Graceful degradation, no failures
Structs§
- Body
Pattern - Constructor
Pattern Visitor - Visitor to detect constructor patterns in function body
Enums§
Functions§
- analyze_
function_ body - Analyze function body for constructor patterns
- extract_
return_ type - Extract return type from function signature using syn