Files
git.stella-ops.org/docs/features/unchecked/scanner/unified-binary-source-reachability.md

3.0 KiB

Unified Binary + Source Reachability (Polyglot Call Graph)

Module

Scanner

Status

IMPLEMENTED

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