# netshield-enterprise/netshield-analyzer architecture

> Architecture diagram of the GitHub repository netshield-enterprise/netshield-analyzer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/netshield-enterprise/netshield-analyzer
- Repository: https://github.com/netshield-enterprise/netshield-analyzer

## Overview

NetShield analyzes Maven Java projects to distinguish vulnerable dependencies from vulnerable code the application can actually reach. The principal workflow resolves dependencies, parses JAR bytecode, builds a method call graph, queries OSV, classifies reachability and risk, then reports a release decision. A separate dashboard exposes analysis and scan-history views. The graph follows the documented CLI orchestration and sampled API/storage behavior; some API and frontend request details were not included in the excerpts, so uncertain wiring is omitted.

Main entry points: [`cmd/analyzer/main.go`](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/cmd/analyzer/main.go) (CLI orchestration), [`internal/callgraph/builder.go`](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/callgraph/builder.go) (Call graph builder), [`internal/api/server.go`](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/api/server.go) (HTTP API), [`internal/cve/osv_client.go`](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/cve/osv_client.go) (OSV client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_analysis["Analysis pipeline"]
  node_maven["Maven resolver<br/>[maven.go]"]
  node_builder["Call graph builder<br/>[builder.go]"]
  node_bytecode["JAR bytecode reader<br/>[jar_reader.go]"]
  node_models["Analysis models"]
end

subgraph group_assessment["Vulnerability assessment"]
  node_osv["OSV client<br/>[osv_client.go]"]
  node_triage["Reachability triage<br/>[analyzer.go]"]
  node_reporter["Risk reporter<br/>[reporter.go]"]
end

subgraph group_interfaces["User interfaces"]
  node_cli["CLI orchestration<br/>[main.go]"]
  node_web_ui["Web dashboard<br/>[App.jsx]"]
  node_api["HTTP API<br/>[server.go]"]
end

subgraph group_state["History and integrations"]
  node_history[("Scan history store<br/>[database.go]")]
  node_telemetry["Telemetry<br/>[telemetry.go]"]
end

node_engineer(("Engineer"))
node_osv_service(("OSV database"))
node_platform(("Telemetry platform"))

node_engineer -->|"runs scan"| node_cli
node_cli -->|"resolves dependencies"| node_maven
node_cli -->|"builds graph"| node_builder
node_builder -->|"parses JARs"| node_bytecode
node_builder -->|"constructs graph"| node_models
node_cli -->|"queries vulnerabilities"| node_osv
node_osv -->|"queries CVEs"| node_osv_service
node_cli -->|"classifies findings"| node_triage
node_triage -->|"uses analysis data"| node_models
node_cli -->|"generates report"| node_reporter
node_engineer -->|"views dashboard"| node_web_ui
node_web_ui -.->|"requests analysis"| node_api
node_api -->|"builds graph"| node_builder
node_api -->|"reads and writes scans"| node_history
node_cli -->|"sends scan summary"| node_telemetry
node_telemetry -->|"sends telemetry"| node_platform

click node_cli "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/cmd/analyzer/main.go"
click node_maven "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/parser/maven.go"
click node_builder "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/callgraph/builder.go"
click node_bytecode "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/bytecode/jar_reader.go"
click node_models "https://github.com/netshield-enterprise/netshield-analyzer/tree/main/pkg/models"
click node_osv "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/cve/osv_client.go"
click node_triage "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/triage/analyzer.go"
click node_reporter "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/triage/reporter.go"
click node_web_ui "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/web/src/App.jsx"
click node_api "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/api/server.go"
click node_history "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/database/database.go"
click node_telemetry "https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/telemetry/telemetry.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_maven,node_builder,node_bytecode,node_models toneBlue
class node_osv,node_triage,node_reporter,node_osv_service toneAmber
class node_cli,node_web_ui,node_api toneMint
class node_history,node_telemetry toneRose
class node_engineer,node_platform toneIndigo
```

## Components

### Analysis pipeline

- [Maven resolver](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/parser/maven.go): `internal/parser/maven.go`
- [Call graph builder](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/callgraph/builder.go): `internal/callgraph/builder.go`
- [JAR bytecode reader](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/bytecode/jar_reader.go): `internal/bytecode/jar_reader.go`
- [Analysis models](https://github.com/netshield-enterprise/netshield-analyzer/tree/main/pkg/models): `pkg/models`

### Vulnerability assessment

- [OSV client](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/cve/osv_client.go): `internal/cve/osv_client.go`
- [Reachability triage](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/triage/analyzer.go): `internal/triage/analyzer.go`
- [Risk reporter](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/triage/reporter.go): `internal/triage/reporter.go`

### User interfaces

- [CLI orchestration](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/cmd/analyzer/main.go): `cmd/analyzer/main.go`
- [Web dashboard](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/web/src/App.jsx): `web/src/App.jsx`
- [HTTP API](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/api/server.go): `internal/api/server.go`

### History and integrations

- [Scan history store](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/database/database.go): `internal/database/database.go`
- [Telemetry](https://github.com/netshield-enterprise/netshield-analyzer/blob/main/internal/telemetry/telemetry.go): `internal/telemetry/telemetry.go`

### Other components

- **Engineer**
- **OSV database**
- **Telemetry platform**

## Connections

- Engineer → CLI orchestration: runs scan
- CLI orchestration → Maven resolver: resolves dependencies
- CLI orchestration → Call graph builder: builds graph
- Call graph builder → JAR bytecode reader: parses JARs
- Call graph builder → Analysis models: constructs graph
- CLI orchestration → OSV client: queries vulnerabilities
- OSV client → OSV database: queries CVEs
- CLI orchestration → Reachability triage: classifies findings
- Reachability triage → Analysis models: uses analysis data
- CLI orchestration → Risk reporter: generates report
- Engineer → Web dashboard: views dashboard
- Web dashboard → HTTP API: requests analysis
- HTTP API → Call graph builder: builds graph
- HTTP API → Scan history store: reads and writes scans
- CLI orchestration → Telemetry: sends scan summary
- Telemetry → Telemetry platform: sends telemetry
