Files
git.stella-ops.org/docs/features/checked/scanner/unified-binary-source-reachability.md
2026-02-14 09:11:48 +02:00

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 |