# 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 |