Add call graph fixtures for various languages and scenarios
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
Findings Ledger CI / build-test (push) Has been cancelled
Findings Ledger CI / migration-validation (push) Has been cancelled
Findings Ledger CI / generate-manifest (push) Has been cancelled
Lighthouse CI / Lighthouse Audit (push) Has been cancelled
Lighthouse CI / Axe Accessibility Audit (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Reachability Corpus Validation / validate-corpus (push) Has been cancelled
Reachability Corpus Validation / validate-ground-truths (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Reachability Corpus Validation / determinism-check (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
Findings Ledger CI / build-test (push) Has been cancelled
Findings Ledger CI / migration-validation (push) Has been cancelled
Findings Ledger CI / generate-manifest (push) Has been cancelled
Lighthouse CI / Lighthouse Audit (push) Has been cancelled
Lighthouse CI / Axe Accessibility Audit (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Reachability Corpus Validation / validate-corpus (push) Has been cancelled
Reachability Corpus Validation / validate-ground-truths (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Reachability Corpus Validation / determinism-check (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
- Introduced `all-edge-reasons.json` to test edge resolution reasons in .NET. - Added `all-visibility-levels.json` to validate method visibility levels in .NET. - Created `dotnet-aspnetcore-minimal.json` for a minimal ASP.NET Core application. - Included `go-gin-api.json` for a Go Gin API application structure. - Added `java-spring-boot.json` for the Spring PetClinic application in Java. - Introduced `legacy-no-schema.json` for legacy application structure without schema. - Created `node-express-api.json` for an Express.js API application structure.
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"schema": "stella.callgraph.v1",
|
||||
"scanKey": "scan:edge-reasons-test:1.0.0",
|
||||
"language": "DotNet",
|
||||
"artifacts": [
|
||||
{
|
||||
"artifactKey": "TestAssembly.dll",
|
||||
"kind": "assembly",
|
||||
"sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{ "id": "async", "name": "AsyncTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "caller", "name": "Caller", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "delegate", "name": "DelegateTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "di", "name": "DiTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "direct", "name": "DirectTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "dynamic", "name": "DynamicTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "event", "name": "EventTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "generic", "name": "GenericTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "native", "name": "NativeTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "newobj", "name": "NewObjTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "reflection", "name": "ReflectionTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "runtime", "name": "RuntimeTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "unknown", "name": "UnknownTarget", "kind": "method", "visibility": "Public" },
|
||||
{ "id": "virtual", "name": "VirtualTarget", "kind": "method", "visibility": "Public" }
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "direct",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "virtual",
|
||||
"type": "callvirt",
|
||||
"kind": "Static",
|
||||
"reason": "VirtualCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true,
|
||||
"candidates": ["impl1", "impl2"]
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "reflection",
|
||||
"type": "reflection",
|
||||
"kind": "Heuristic",
|
||||
"reason": "ReflectionString",
|
||||
"weight": 0.5,
|
||||
"isResolved": false,
|
||||
"provenance": "Type.GetMethod"
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "di",
|
||||
"type": "di-binding",
|
||||
"kind": "Heuristic",
|
||||
"reason": "DiBinding",
|
||||
"weight": 0.9,
|
||||
"isResolved": true,
|
||||
"provenance": "Microsoft.Extensions.DependencyInjection"
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "dynamic",
|
||||
"type": "dynamic-import",
|
||||
"kind": "Heuristic",
|
||||
"reason": "DynamicImport",
|
||||
"weight": 0.7,
|
||||
"isResolved": false
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "newobj",
|
||||
"type": "newobj",
|
||||
"kind": "Static",
|
||||
"reason": "NewObj",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "delegate",
|
||||
"type": "ldftn",
|
||||
"kind": "Static",
|
||||
"reason": "DelegateCreate",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "async",
|
||||
"type": "async",
|
||||
"kind": "Static",
|
||||
"reason": "AsyncContinuation",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "event",
|
||||
"type": "event",
|
||||
"kind": "Heuristic",
|
||||
"reason": "EventHandler",
|
||||
"weight": 0.85,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "generic",
|
||||
"type": "generic",
|
||||
"kind": "Static",
|
||||
"reason": "GenericInstantiation",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "native",
|
||||
"type": "pinvoke",
|
||||
"kind": "Static",
|
||||
"reason": "NativeInterop",
|
||||
"weight": 1.0,
|
||||
"isResolved": false,
|
||||
"provenance": "kernel32.dll"
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "runtime",
|
||||
"type": "runtime",
|
||||
"kind": "Runtime",
|
||||
"reason": "RuntimeMinted",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "caller",
|
||||
"targetId": "unknown",
|
||||
"type": "unknown",
|
||||
"kind": "Heuristic",
|
||||
"reason": "Unknown",
|
||||
"weight": 0.3,
|
||||
"isResolved": false
|
||||
}
|
||||
],
|
||||
"entrypoints": [
|
||||
{
|
||||
"nodeId": "caller",
|
||||
"kind": "Test",
|
||||
"framework": "Unknown",
|
||||
"source": "test-runner",
|
||||
"phase": "Runtime",
|
||||
"order": 0
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"toolId": "stellaops.scanner.test",
|
||||
"toolVersion": "1.0.0",
|
||||
"analysisTimestamp": "2025-01-15T14:00:00Z"
|
||||
},
|
||||
"id": "cg-edge-reasons-001",
|
||||
"component": "EdgeReasonsTest",
|
||||
"version": "1.0.0",
|
||||
"ingestedAt": "2025-01-15T14:00:00Z",
|
||||
"graphHash": "sha256:edge-reasons"
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"schema": "stella.callgraph.v1",
|
||||
"scanKey": "scan:visibility-test:1.0.0",
|
||||
"language": "DotNet",
|
||||
"artifacts": [
|
||||
{
|
||||
"artifactKey": "VisibilityTest.dll",
|
||||
"kind": "assembly",
|
||||
"sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "v001",
|
||||
"name": "PublicMethod",
|
||||
"kind": "method",
|
||||
"namespace": "VisibilityTest",
|
||||
"symbolKey": "VisibilityTest::PublicMethod()",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true
|
||||
},
|
||||
{
|
||||
"id": "v002",
|
||||
"name": "InternalMethod",
|
||||
"kind": "method",
|
||||
"namespace": "VisibilityTest.Internal",
|
||||
"symbolKey": "VisibilityTest.Internal::InternalMethod()",
|
||||
"visibility": "Internal",
|
||||
"isEntrypointCandidate": false
|
||||
},
|
||||
{
|
||||
"id": "v003",
|
||||
"name": "ProtectedMethod",
|
||||
"kind": "method",
|
||||
"namespace": "VisibilityTest",
|
||||
"symbolKey": "VisibilityTest.BaseClass::ProtectedMethod()",
|
||||
"visibility": "Protected",
|
||||
"isEntrypointCandidate": false
|
||||
},
|
||||
{
|
||||
"id": "v004",
|
||||
"name": "PrivateMethod",
|
||||
"kind": "method",
|
||||
"namespace": "VisibilityTest",
|
||||
"symbolKey": "VisibilityTest.SomeClass::PrivateMethod()",
|
||||
"visibility": "Private",
|
||||
"isEntrypointCandidate": false
|
||||
},
|
||||
{
|
||||
"id": "v005",
|
||||
"name": "UnknownMethod",
|
||||
"kind": "method",
|
||||
"namespace": "External",
|
||||
"symbolKey": "External::UnknownMethod()",
|
||||
"visibility": "Unknown",
|
||||
"isEntrypointCandidate": false
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"sourceId": "v001",
|
||||
"targetId": "v002",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "v002",
|
||||
"targetId": "v003",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "v003",
|
||||
"targetId": "v004",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "v004",
|
||||
"targetId": "v005",
|
||||
"type": "external",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": false
|
||||
}
|
||||
],
|
||||
"entrypoints": [
|
||||
{
|
||||
"nodeId": "v001",
|
||||
"kind": "Http",
|
||||
"route": "/api/visibility",
|
||||
"httpMethod": "GET",
|
||||
"framework": "AspNetCore",
|
||||
"source": "attribute",
|
||||
"phase": "Runtime",
|
||||
"order": 0
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"toolId": "stellaops.scanner.test",
|
||||
"toolVersion": "1.0.0",
|
||||
"analysisTimestamp": "2025-01-15T15:00:00Z"
|
||||
},
|
||||
"id": "cg-visibility-001",
|
||||
"component": "VisibilityTest",
|
||||
"version": "1.0.0",
|
||||
"ingestedAt": "2025-01-15T15:00:00Z",
|
||||
"graphHash": "sha256:visibility"
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"schema": "stella.callgraph.v1",
|
||||
"scanKey": "scan:dotnet-aspnetcore-minimal:v1.0.0",
|
||||
"language": "DotNet",
|
||||
"artifacts": [
|
||||
{
|
||||
"artifactKey": "SampleApi.dll",
|
||||
"kind": "assembly",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"purl": "pkg:nuget/SampleApi@1.0.0",
|
||||
"buildId": "build-001",
|
||||
"filePath": "/app/SampleApi.dll",
|
||||
"sizeBytes": 12345
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "n001",
|
||||
"nodeId": "n001",
|
||||
"name": "Main",
|
||||
"kind": "method",
|
||||
"namespace": "SampleApi",
|
||||
"file": "Program.cs",
|
||||
"line": 1,
|
||||
"symbolKey": "SampleApi::Main(string[])",
|
||||
"artifactKey": "SampleApi.dll",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"attributes": {
|
||||
"returnType": "void"
|
||||
},
|
||||
"flags": 1
|
||||
},
|
||||
{
|
||||
"id": "n002",
|
||||
"nodeId": "n002",
|
||||
"name": "GetWeatherForecast",
|
||||
"kind": "method",
|
||||
"namespace": "SampleApi.Controllers",
|
||||
"file": "WeatherForecastController.cs",
|
||||
"line": 15,
|
||||
"symbolKey": "SampleApi.Controllers.WeatherForecastController::GetWeatherForecast()",
|
||||
"artifactKey": "SampleApi.dll",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"attributes": {
|
||||
"returnType": "IEnumerable<WeatherForecast>",
|
||||
"httpMethod": "GET",
|
||||
"route": "/weatherforecast"
|
||||
},
|
||||
"flags": 3
|
||||
},
|
||||
{
|
||||
"id": "n003",
|
||||
"nodeId": "n003",
|
||||
"name": "GetRandomSummary",
|
||||
"kind": "method",
|
||||
"namespace": "SampleApi.Services",
|
||||
"file": "WeatherService.cs",
|
||||
"line": 20,
|
||||
"symbolKey": "SampleApi.Services.WeatherService::GetRandomSummary()",
|
||||
"artifactKey": "SampleApi.dll",
|
||||
"visibility": "Internal",
|
||||
"isEntrypointCandidate": false,
|
||||
"attributes": {
|
||||
"returnType": "string"
|
||||
},
|
||||
"flags": 0
|
||||
},
|
||||
{
|
||||
"id": "n004",
|
||||
"nodeId": "n004",
|
||||
"name": "CreateLogger",
|
||||
"kind": "method",
|
||||
"namespace": "SampleApi.Internal",
|
||||
"file": "LoggingHelper.cs",
|
||||
"line": 8,
|
||||
"symbolKey": "SampleApi.Internal.LoggingHelper::CreateLogger()",
|
||||
"artifactKey": "SampleApi.dll",
|
||||
"visibility": "Private",
|
||||
"isEntrypointCandidate": false,
|
||||
"flags": 0
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"sourceId": "n001",
|
||||
"targetId": "n002",
|
||||
"from": "n001",
|
||||
"to": "n002",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "n002",
|
||||
"targetId": "n003",
|
||||
"from": "n002",
|
||||
"to": "n003",
|
||||
"type": "di",
|
||||
"kind": "Heuristic",
|
||||
"reason": "DiBinding",
|
||||
"weight": 0.9,
|
||||
"isResolved": true,
|
||||
"provenance": "Microsoft.Extensions.DependencyInjection"
|
||||
},
|
||||
{
|
||||
"sourceId": "n003",
|
||||
"targetId": "n004",
|
||||
"from": "n003",
|
||||
"to": "n004",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"offset": 42,
|
||||
"isResolved": true
|
||||
}
|
||||
],
|
||||
"entrypoints": [
|
||||
{
|
||||
"nodeId": "n001",
|
||||
"kind": "Main",
|
||||
"framework": "AspNetCore",
|
||||
"source": "attribute",
|
||||
"phase": "AppStart",
|
||||
"order": 0
|
||||
},
|
||||
{
|
||||
"nodeId": "n002",
|
||||
"kind": "Http",
|
||||
"route": "/weatherforecast",
|
||||
"httpMethod": "GET",
|
||||
"framework": "AspNetCore",
|
||||
"source": "attribute",
|
||||
"phase": "Runtime",
|
||||
"order": 1
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"toolId": "stellaops.scanner.dotnet",
|
||||
"toolVersion": "1.0.0",
|
||||
"analysisTimestamp": "2025-01-15T10:00:00Z",
|
||||
"sourceCommit": "abc123def456",
|
||||
"buildId": "build-001"
|
||||
},
|
||||
"id": "cg-dotnet-aspnetcore-minimal-001",
|
||||
"languageString": "dotnet",
|
||||
"component": "SampleApi",
|
||||
"version": "1.0.0",
|
||||
"ingestedAt": "2025-01-15T10:00:00Z",
|
||||
"graphHash": "sha256:a1b2c3d4e5f6"
|
||||
}
|
||||
155
tests/reachability/fixtures/callgraph-schema-v1/go-gin-api.json
Normal file
155
tests/reachability/fixtures/callgraph-schema-v1/go-gin-api.json
Normal file
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"schema": "stella.callgraph.v1",
|
||||
"scanKey": "scan:gin-api:1.5.0",
|
||||
"language": "Go",
|
||||
"artifacts": [
|
||||
{
|
||||
"artifactKey": "gin-api",
|
||||
"kind": "go-binary",
|
||||
"sha256": "d5e6f78901234567890abcdef0123456789abcdef0123456789abcdef0123456",
|
||||
"purl": "pkg:golang/github.com/example/gin-api@1.5.0",
|
||||
"filePath": "/app/gin-api",
|
||||
"sizeBytes": 15000000
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "g001",
|
||||
"nodeId": "g001",
|
||||
"name": "main",
|
||||
"kind": "function",
|
||||
"namespace": "main",
|
||||
"file": "main.go",
|
||||
"line": 12,
|
||||
"symbolKey": "main.main",
|
||||
"artifactKey": "gin-api",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"flags": 1
|
||||
},
|
||||
{
|
||||
"id": "g002",
|
||||
"nodeId": "g002",
|
||||
"name": "GetProduct",
|
||||
"kind": "function",
|
||||
"namespace": "handlers",
|
||||
"file": "product_handler.go",
|
||||
"line": 28,
|
||||
"symbolKey": "github.com/example/gin-api/handlers.GetProduct",
|
||||
"artifactKey": "gin-api",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"attributes": {
|
||||
"httpMethod": "GET",
|
||||
"route": "/api/products/:id"
|
||||
},
|
||||
"flags": 3
|
||||
},
|
||||
{
|
||||
"id": "g003",
|
||||
"nodeId": "g003",
|
||||
"name": "FindByID",
|
||||
"kind": "function",
|
||||
"namespace": "repository",
|
||||
"file": "product_repo.go",
|
||||
"line": 45,
|
||||
"symbolKey": "github.com/example/gin-api/repository.(*ProductRepo).FindByID",
|
||||
"artifactKey": "gin-api",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": false,
|
||||
"flags": 0
|
||||
},
|
||||
{
|
||||
"id": "g004",
|
||||
"nodeId": "g004",
|
||||
"name": "init",
|
||||
"kind": "function",
|
||||
"namespace": "config",
|
||||
"file": "config.go",
|
||||
"line": 8,
|
||||
"symbolKey": "github.com/example/gin-api/config.init",
|
||||
"artifactKey": "gin-api",
|
||||
"visibility": "Unknown",
|
||||
"isEntrypointCandidate": true,
|
||||
"flags": 2
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"sourceId": "g004",
|
||||
"targetId": "g001",
|
||||
"from": "g004",
|
||||
"to": "g001",
|
||||
"type": "init",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true,
|
||||
"provenance": "go-init-order"
|
||||
},
|
||||
{
|
||||
"sourceId": "g001",
|
||||
"targetId": "g002",
|
||||
"from": "g001",
|
||||
"to": "g002",
|
||||
"type": "router-bind",
|
||||
"kind": "Heuristic",
|
||||
"reason": "DelegateCreate",
|
||||
"weight": 0.9,
|
||||
"isResolved": true,
|
||||
"provenance": "gin-router"
|
||||
},
|
||||
{
|
||||
"sourceId": "g002",
|
||||
"targetId": "g003",
|
||||
"from": "g002",
|
||||
"to": "g003",
|
||||
"type": "interface",
|
||||
"kind": "Static",
|
||||
"reason": "VirtualCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
}
|
||||
],
|
||||
"entrypoints": [
|
||||
{
|
||||
"nodeId": "g004",
|
||||
"kind": "ModuleInit",
|
||||
"framework": "Unknown",
|
||||
"source": "convention",
|
||||
"phase": "ModuleInit",
|
||||
"order": 0
|
||||
},
|
||||
{
|
||||
"nodeId": "g001",
|
||||
"kind": "Main",
|
||||
"framework": "Gin",
|
||||
"source": "convention",
|
||||
"phase": "AppStart",
|
||||
"order": 1
|
||||
},
|
||||
{
|
||||
"nodeId": "g002",
|
||||
"kind": "Http",
|
||||
"route": "/api/products/:id",
|
||||
"httpMethod": "GET",
|
||||
"framework": "Gin",
|
||||
"source": "code-analysis",
|
||||
"phase": "Runtime",
|
||||
"order": 2
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"toolId": "stellaops.scanner.go",
|
||||
"toolVersion": "1.0.0",
|
||||
"analysisTimestamp": "2025-01-15T13:00:00Z",
|
||||
"sourceCommit": "012def345abc",
|
||||
"buildId": "build-004"
|
||||
},
|
||||
"id": "cg-go-gin-api-001",
|
||||
"languageString": "go",
|
||||
"component": "gin-api",
|
||||
"version": "1.5.0",
|
||||
"ingestedAt": "2025-01-15T13:00:00Z",
|
||||
"graphHash": "sha256:d4e5f6a7b8c9"
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"schema": "stella.callgraph.v1",
|
||||
"scanKey": "scan:spring-petclinic:3.2.0",
|
||||
"language": "Java",
|
||||
"artifacts": [
|
||||
{
|
||||
"artifactKey": "spring-petclinic-3.2.0.jar",
|
||||
"kind": "jar",
|
||||
"sha256": "f4d3c2b1a0987654321fedcba0987654321fedcba0987654321fedcba098765",
|
||||
"purl": "pkg:maven/org.springframework.samples/spring-petclinic@3.2.0",
|
||||
"filePath": "/app/spring-petclinic-3.2.0.jar",
|
||||
"sizeBytes": 54321000
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "j001",
|
||||
"nodeId": "j001",
|
||||
"name": "main",
|
||||
"kind": "method",
|
||||
"namespace": "org.springframework.samples.petclinic",
|
||||
"file": "PetClinicApplication.java",
|
||||
"line": 25,
|
||||
"symbolKey": "org.springframework.samples.petclinic.PetClinicApplication::main(String[])",
|
||||
"artifactKey": "spring-petclinic-3.2.0.jar",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"attributes": {
|
||||
"returnType": "void",
|
||||
"modifiers": "public static"
|
||||
},
|
||||
"flags": 1
|
||||
},
|
||||
{
|
||||
"id": "j002",
|
||||
"nodeId": "j002",
|
||||
"name": "showOwner",
|
||||
"kind": "method",
|
||||
"namespace": "org.springframework.samples.petclinic.owner",
|
||||
"file": "OwnerController.java",
|
||||
"line": 87,
|
||||
"symbolKey": "org.springframework.samples.petclinic.owner.OwnerController::showOwner(int)",
|
||||
"artifactKey": "spring-petclinic-3.2.0.jar",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"attributes": {
|
||||
"returnType": "ModelAndView",
|
||||
"httpMethod": "GET",
|
||||
"route": "/owners/{ownerId}"
|
||||
},
|
||||
"flags": 3
|
||||
},
|
||||
{
|
||||
"id": "j003",
|
||||
"nodeId": "j003",
|
||||
"name": "findById",
|
||||
"kind": "method",
|
||||
"namespace": "org.springframework.samples.petclinic.owner",
|
||||
"file": "OwnerRepository.java",
|
||||
"line": 42,
|
||||
"symbolKey": "org.springframework.samples.petclinic.owner.OwnerRepository::findById(Integer)",
|
||||
"artifactKey": "spring-petclinic-3.2.0.jar",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": false,
|
||||
"attributes": {
|
||||
"returnType": "Owner"
|
||||
},
|
||||
"flags": 0
|
||||
},
|
||||
{
|
||||
"id": "j004",
|
||||
"nodeId": "j004",
|
||||
"name": "validateOwner",
|
||||
"kind": "method",
|
||||
"namespace": "org.springframework.samples.petclinic.owner",
|
||||
"file": "OwnerValidator.java",
|
||||
"line": 30,
|
||||
"symbolKey": "org.springframework.samples.petclinic.owner.OwnerValidator::validateOwner(Owner)",
|
||||
"artifactKey": "spring-petclinic-3.2.0.jar",
|
||||
"visibility": "Protected",
|
||||
"isEntrypointCandidate": false,
|
||||
"flags": 0
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"sourceId": "j001",
|
||||
"targetId": "j002",
|
||||
"from": "j001",
|
||||
"to": "j002",
|
||||
"type": "spring-bean",
|
||||
"kind": "Heuristic",
|
||||
"reason": "DiBinding",
|
||||
"weight": 0.85,
|
||||
"isResolved": true,
|
||||
"provenance": "SpringBoot"
|
||||
},
|
||||
{
|
||||
"sourceId": "j002",
|
||||
"targetId": "j003",
|
||||
"from": "j002",
|
||||
"to": "j003",
|
||||
"type": "virtual",
|
||||
"kind": "Static",
|
||||
"reason": "VirtualCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "j002",
|
||||
"targetId": "j004",
|
||||
"from": "j002",
|
||||
"to": "j004",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"offset": 156,
|
||||
"isResolved": true
|
||||
}
|
||||
],
|
||||
"entrypoints": [
|
||||
{
|
||||
"nodeId": "j001",
|
||||
"kind": "Main",
|
||||
"framework": "SpringBoot",
|
||||
"source": "annotation",
|
||||
"phase": "AppStart",
|
||||
"order": 0
|
||||
},
|
||||
{
|
||||
"nodeId": "j002",
|
||||
"kind": "Http",
|
||||
"route": "/owners/{ownerId}",
|
||||
"httpMethod": "GET",
|
||||
"framework": "Spring",
|
||||
"source": "annotation",
|
||||
"phase": "Runtime",
|
||||
"order": 1
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"toolId": "stellaops.scanner.java",
|
||||
"toolVersion": "1.0.0",
|
||||
"analysisTimestamp": "2025-01-15T11:00:00Z",
|
||||
"sourceCommit": "def789abc012",
|
||||
"buildId": "build-002"
|
||||
},
|
||||
"id": "cg-java-spring-petclinic-001",
|
||||
"languageString": "java",
|
||||
"component": "spring-petclinic",
|
||||
"version": "3.2.0",
|
||||
"ingestedAt": "2025-01-15T11:00:00Z",
|
||||
"graphHash": "sha256:b2c3d4e5f6a7"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"id": "cg-legacy-001",
|
||||
"languageString": "csharp",
|
||||
"component": "LegacyApp",
|
||||
"version": "0.9.0",
|
||||
"ingestedAt": "2024-06-15T08:00:00Z",
|
||||
"graphHash": "sha256:legacy123",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "l001",
|
||||
"name": "Main",
|
||||
"kind": "method",
|
||||
"namespace": "LegacyApp"
|
||||
},
|
||||
{
|
||||
"id": "l002",
|
||||
"name": "ProcessData",
|
||||
"kind": "method",
|
||||
"namespace": "LegacyApp.Controllers"
|
||||
},
|
||||
{
|
||||
"id": "l003",
|
||||
"name": "ValidateInput",
|
||||
"kind": "method",
|
||||
"namespace": "LegacyApp.Internal"
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"sourceId": "l001",
|
||||
"targetId": "l002",
|
||||
"type": "call"
|
||||
},
|
||||
{
|
||||
"sourceId": "l002",
|
||||
"targetId": "l003",
|
||||
"type": "call"
|
||||
}
|
||||
],
|
||||
"roots": [
|
||||
{
|
||||
"id": "l001",
|
||||
"phase": "startup",
|
||||
"source": "convention"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"schema": "stella.callgraph.v1",
|
||||
"scanKey": "scan:express-api:2.1.0",
|
||||
"language": "Node",
|
||||
"artifacts": [
|
||||
{
|
||||
"artifactKey": "express-api",
|
||||
"kind": "npm-package",
|
||||
"sha256": "c4d5e6f7890123456789abcdef0123456789abcdef0123456789abcdef012345",
|
||||
"purl": "pkg:npm/express-api@2.1.0",
|
||||
"filePath": "/app",
|
||||
"sizeBytes": 2500000
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "e001",
|
||||
"nodeId": "e001",
|
||||
"name": "startServer",
|
||||
"kind": "function",
|
||||
"namespace": "src",
|
||||
"file": "index.js",
|
||||
"line": 15,
|
||||
"symbolKey": "src/index.js::startServer",
|
||||
"artifactKey": "express-api",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"flags": 1
|
||||
},
|
||||
{
|
||||
"id": "e002",
|
||||
"nodeId": "e002",
|
||||
"name": "getUserById",
|
||||
"kind": "function",
|
||||
"namespace": "src/routes",
|
||||
"file": "users.js",
|
||||
"line": 22,
|
||||
"symbolKey": "src/routes/users.js::getUserById",
|
||||
"artifactKey": "express-api",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": true,
|
||||
"attributes": {
|
||||
"httpMethod": "GET",
|
||||
"route": "/api/users/:id"
|
||||
},
|
||||
"flags": 3
|
||||
},
|
||||
{
|
||||
"id": "e003",
|
||||
"nodeId": "e003",
|
||||
"name": "findUser",
|
||||
"kind": "function",
|
||||
"namespace": "src/services",
|
||||
"file": "userService.js",
|
||||
"line": 45,
|
||||
"symbolKey": "src/services/userService.js::findUser",
|
||||
"artifactKey": "express-api",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": false,
|
||||
"flags": 0
|
||||
},
|
||||
{
|
||||
"id": "e004",
|
||||
"nodeId": "e004",
|
||||
"name": "query",
|
||||
"kind": "function",
|
||||
"namespace": "src/db",
|
||||
"file": "connection.js",
|
||||
"line": 30,
|
||||
"symbolKey": "src/db/connection.js::query",
|
||||
"artifactKey": "express-api",
|
||||
"visibility": "Public",
|
||||
"isEntrypointCandidate": false,
|
||||
"flags": 0
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"sourceId": "e001",
|
||||
"targetId": "e002",
|
||||
"from": "e001",
|
||||
"to": "e002",
|
||||
"type": "require",
|
||||
"kind": "Static",
|
||||
"reason": "DynamicImport",
|
||||
"weight": 0.95,
|
||||
"isResolved": true,
|
||||
"provenance": "express-router"
|
||||
},
|
||||
{
|
||||
"sourceId": "e002",
|
||||
"targetId": "e003",
|
||||
"from": "e002",
|
||||
"to": "e003",
|
||||
"type": "call",
|
||||
"kind": "Static",
|
||||
"reason": "DirectCall",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
},
|
||||
{
|
||||
"sourceId": "e003",
|
||||
"targetId": "e004",
|
||||
"from": "e003",
|
||||
"to": "e004",
|
||||
"type": "async-call",
|
||||
"kind": "Static",
|
||||
"reason": "AsyncContinuation",
|
||||
"weight": 1.0,
|
||||
"isResolved": true
|
||||
}
|
||||
],
|
||||
"entrypoints": [
|
||||
{
|
||||
"nodeId": "e001",
|
||||
"kind": "Main",
|
||||
"framework": "Express",
|
||||
"source": "convention",
|
||||
"phase": "AppStart",
|
||||
"order": 0
|
||||
},
|
||||
{
|
||||
"nodeId": "e002",
|
||||
"kind": "Http",
|
||||
"route": "/api/users/:id",
|
||||
"httpMethod": "GET",
|
||||
"framework": "Express",
|
||||
"source": "code-analysis",
|
||||
"phase": "Runtime",
|
||||
"order": 1
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"toolId": "stellaops.scanner.node",
|
||||
"toolVersion": "1.0.0",
|
||||
"analysisTimestamp": "2025-01-15T12:00:00Z",
|
||||
"sourceCommit": "789abc012def",
|
||||
"buildId": "build-003"
|
||||
},
|
||||
"id": "cg-node-express-api-001",
|
||||
"languageString": "javascript",
|
||||
"component": "express-api",
|
||||
"version": "2.1.0",
|
||||
"ingestedAt": "2025-01-15T12:00:00Z",
|
||||
"graphHash": "sha256:c3d4e5f6a7b8"
|
||||
}
|
||||
Reference in New Issue
Block a user