52 lines
3.2 KiB
Markdown
52 lines
3.2 KiB
Markdown
# Unified Binary + Source Reachability (Polyglot Call Graph)
|
|
|
|
## Module
|
|
Scanner
|
|
|
|
## Status
|
|
VERIFIED
|
|
|
|
## Description
|
|
Multi-language call graph extraction is implemented for binary, Java, Python, Node, Ruby, PHP, and JavaScript ecosystems with native callgraph building.
|
|
|
|
## Implementation Details
|
|
- **Binary Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/Binary/BinaryCallGraphExtractor.cs` - `BinaryCallGraphExtractor` building call graphs from native binaries (ELF, PE, Mach-O) using disassembly and PLT/IAT resolution
|
|
- **Java Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/Java/JavaCallGraphExtractor.cs` - `JavaCallGraphExtractor` building call graphs from Java bytecode with virtual dispatch resolution
|
|
- **Python Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/Python/PythonCallGraphExtractor.cs` - `PythonCallGraphExtractor` building call graphs from Python AST analysis
|
|
- **Node Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/Node/NodeCallGraphExtractor.cs` - `NodeCallGraphExtractor` building call graphs from Node.js module resolution
|
|
- **JavaScript Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/JavaScript/JavaScriptCallGraphExtractor.cs` - `JavaScriptCallGraphExtractor` building call graphs from JavaScript/TypeScript
|
|
- **Ruby Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/Ruby/RubyCallGraphExtractor.cs` - `RubyCallGraphExtractor` building call graphs from Ruby source analysis
|
|
- **PHP Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/Php/PhpCallGraphExtractor.cs` - `PhpCallGraphExtractor` building call graphs from PHP source analysis
|
|
- **Go Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/Go/GoCallGraphExtractor.cs` - `GoCallGraphExtractor` building call graphs from Go source
|
|
- **.NET Call Graph**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/Extraction/DotNet/DotNetCallGraphExtractor.cs` - `DotNetCallGraphExtractor` building call graphs from .NET assemblies
|
|
- **DI Registration**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.CallGraph/DependencyInjection/CallGraphServiceCollectionExtensions.cs` - Registering all call graph extractors
|
|
|
|
## E2E Test Plan
|
|
- [ ] Extract a call graph from a Java application and verify it includes both source-level and bytecode-level edges
|
|
- [ ] Extract a binary call graph from an ELF binary and verify PLT resolution connects to imported library functions
|
|
- [ ] Verify polyglot call graph construction: Python calling a C extension library, with edges crossing the language boundary
|
|
- [ ] Verify Node.js call graph extraction handles CommonJS `require()` and ESM `import` patterns
|
|
- [ ] Verify Ruby call graph extraction handles Rails controller dispatch and method_missing patterns
|
|
- [ ] Verify the unified call graph merges binary and source call graphs into a single reachability graph
|
|
|
|
---
|
|
|
|
## Verification
|
|
|
|
| Check | Result |
|
|
|-------|--------|
|
|
| Tier 0 - Source files exist | PASS |
|
|
| Tier 1 - Build + code review | PASS |
|
|
| Tier 2 - Integration tests | PASS |
|
|
| Verified | 2026-02-13T18:10:00Z |
|