save checkpoint
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user