Tutte le funzioni
Dodici comandi, un solo eseguibile. Che cosa fa ciascuno e quali opzioni accetta.
Panoramica
si-engine è un solo eseguibile, si-engine, con dodici comandi. Costruisce una conoscenza dell'applicazione (entità, relazioni, regole, evidenze) e la rende interrogabile da riga di comando, da un'API locale e da un server MCP.
| Comando | Che cosa fa |
|---|---|
init | Crea l'area di lavoro: cartelle, impostazioni locali, database SQLite. |
app add · app list | Registra e elenca le applicazioni da analizzare. |
database test | Prova la connessione a SQL Server e i permessi dell'account. |
scan | Analizza codice e database e salva un'istantanea immutabile. |
status | Stato dell'applicazione e dell'ultima scansione, con la copertura. |
export human · export llm | Documentazione per le persone e knowledge per gli agenti AI. |
search | Ricerca full-text nel modello di conoscenza. |
context | Context pack con budget di token per un agente. |
impact | Che cosa può toccare la modifica di un elemento. |
diff | Differenze tra due scansioni. |
api serve | API locale di lettura, solo loopback, protetta da token. |
mcp serve | Server MCP su stdio con 10 tool di sola lettura. |
Opzioni valide per tutti i comandi: --json (risultati ed errori in JSON su stdout), -q (silenzioso), -v (livello di log) e -w (cartella dell'area di lavoro; predefinita $SIE_HOME, altrimenti la cartella corrente).
Che cosa analizza
| Area | Contenuto |
|---|---|
| Scoperta | Progetti, file e tecnologie del repository. Web Forms, MVC 5 e formati legacy sono elencati e segnalati come non supportati. |
| Codice C# | Roslyn sugli alberi sintattici, senza compilare né eseguire nulla: tipi, simboli, grafo delle chiamate. |
| ASP.NET Core | Controller, azioni, route, endpoint minimal API, pagine Razor, viste MVC, menu e permessi ([Authorize], ruoli, policy). |
| Accesso ai dati | EF Core, Dapper e ADO.NET: quali classi leggono o scrivono quali tabelle, con segnalazione dell'SQL dinamico. |
| Regole di business | Autorizzazione, validazione, vincoli, calcoli, transizioni di stato, ognuna con condizione, effetto e codice di origine. |
| Database SQL Server | Tabelle, colonne, vincoli, indici, viste, procedure, funzioni, trigger, sinonimi, sequenze, extended property e dipendenze. Solo schema: i dati delle tabelle non vengono mai letti. |
| Correlazione | Collega pagina → azione → servizio → repository → tabella, con confidenza per ogni passo. |
Ogni informazione porta l'evidenza (file e righe), il metodo di estrazione e una confidenza. Il dedotto resta distinto dal fatto. La copertura elenca sempre che cosa non è stato analizzato.
scan
Esegue nove fasi (scoperta, estrazione del codice, estrazione del database, normalizzazione, mappatura, regole, correlazione, validazione, modello di conoscenza) e salva una scansione immutabile.
| Opzione | Effetto |
|---|---|
--source-only | Salta il database: analizza solo il codice. |
--database-only | Salta il codice: estrae solo lo schema. |
--incremental | Riusa i risultati della scansione precedente per ciò che non è cambiato; se non può, esegue una scansione completa e ne dice il motivo. Scrive sempre una nuova scansione. |
database.extraction_failed, prosegue sul solo codice e la copertura segna il database come non analizzato, con la causa (per esempio sql_error_10061). Esce con codice 0. Fanno eccezione --database-only e un account con permessi di scrittura, che restano errori. Vedi l'esempio.export
export human scrive una cartella di Markdown, Mermaid e CSV; export llm scrive JSON validati da JSON Schema, più frammenti compatti per gli agenti.
| Cartella | Contenuto |
|---|---|
human/ | index.md, overview.md, architecture.md e .mmd, technology-stack.md, projects.md, scan-report.md |
api/, pages/, modules/, navigation/, security/, business-rules/, database/ (tabelle, procedure, diagramma ER), dependencies/, impact/, csv/ | |
llm/ | manifest.json, index.json, application.json, architecture.json, pages/, services/, modules/, rules/, database/, relationships/, evidence/, chunks/, context-packs/ |
search
Ricerca full-text (SQLite FTS5) con glossario bilingue italiano/inglese. Si può filtrare e partire da un elemento noto.
| Opzione | Effetto |
|---|---|
--query | Testo da cercare (obbligatorio). |
--type | Tipo di entità: page, table, stored_procedure, business_rule, service, … |
--module · --file | Solo un modulo, oppure solo elementi con evidenza in un file il cui percorso contiene il testo. |
--related-to · --relationship | Solo elementi direttamente collegati a un id stabile, per tipo di relazione (READS, WRITES, CALLS, …). |
--mode | fulltext (predefinito) oppure name. |
--limit · --scan | Numero massimo di risultati (20) e scansione da interrogare (predefinita: la attiva). |
context
Genera un context pack: il sottoinsieme di conoscenza utile a una domanda, con un budget di token dichiarato. Elenca anche ciò che ha escluso.
| Opzione | Effetto |
|---|---|
--max-tokens | Budget stimato (predefinito 12000). La stima è caratteri / 4 e il pack la dichiara approximate. |
--max-characters | Limite rigido aggiuntivo sui caratteri. |
--include-evidence | Aggiunge la sezione EVIDENCE con file e righe. |
--max-depth | Profondità di espansione delle dipendenze. |
impact
Dato un elemento (--target table:dbo.orders), elenca che cosa può essere toccato da una sua modifica: elementi diretti, transitivi, possibili e non verificati, raggruppati per database, entità, servizi, pagine, regole e test. Il rischio è un indicatore con soglie euristiche, non una previsione, e dichiara quando la copertura parziale lo fa sottostimare. Con -o scrive anche i report su file.
diff
diff --from 1 --to 2 confronta due scansioni: entità, relazioni e regole aggiunte, rimosse e modificate. Utile dopo una scansione incrementale.
API locale
api serve avvia un'API REST su 127.0.0.1 con token, fino a Ctrl-C. Si lega solo al loopback e ha un rate limit. Prefisso /api/v1.
| Endpoint | Funzione |
|---|---|
GET/POST /applications, GET /applications/{id} | Elenco, registrazione, riepilogo. |
POST /applications/{id}/scans | Avvia una scansione in modo asincrono (full, source-only, database-only, incrementale). Una alla volta. |
GET /applications/{id}/knowledge, /entities, /relationships | Panoramica e navigazione paginata. |
POST /applications/{id}/search, /context, /impact | Gli stessi motori della CLI. |
GET /applications/{id}/export/human, /export/llm | L'export come archivio ZIP. |
Server MCP
mcp serve parla MCP su stdio e non può scrivere: i dieci tool sono tutti di lettura.
| Tool | Restituisce |
|---|---|
sie_list_applications | Applicazioni registrate con scansione attiva. |
sie_get_overview | Conteggi per tipo, moduli, copertura e warning. |
sie_search | Ricerca con id stabile, tipo, nome e file. |
sie_get_page | Pagina, dati letti e scritti, permessi, evidenze. |
sie_get_table | Tabella, colonne, relazioni, evidenze. |
sie_get_business_rule | Condizione, effetto, origine ed elementi governati. |
sie_get_dependencies | Dipendenze in ampiezza, con confidenza per passo. |
sie_get_relationships | Relazioni dirette per tipo e direzione. |
sie_generate_context | Context pack con budget di token. |
sie_analyze_impact | Analisi di impatto. |
Sicurezza e riservatezza
- Nessun dato esce dalla macchina. L'arricchimento con AI è disattivato.
- Il database è interrogato in sola lettura, con un account da soli
CONNECTeVIEW DEFINITION. Un account che può scrivere viene rifiutato. - La stringa di connessione vive solo in una variabile d'ambiente (
--database-ref env:NOME) e non viene mai salvata. - I segreti sono redatti prima di ogni salvataggio e di ogni output. I file
.env,*.pfxe*.pemnon sono mai letti eappsettings*.jsonè usato solo per l'impronta. - L'API è solo loopback, con token e rate limit.
Configurazione
Le impostazioni stanno in appsettings.json nell'area di lavoro e sono validate all'avvio.
| Sezione | Contenuto |
|---|---|
Storage | Provider (sqlite) e percorso del database. |
Analysis | MaxParallelism, AnalyzeLegacyProjects, MaxFileSizeMb. |
Database | Provider predefinito, timeout dei comandi, ReadOnlyRequired. |
Export | Quali formati produrre: human, llm, Mermaid, CSV. |
Search | Provider di ricerca (sqlite-fts). |
I limiti noti, dal grafo delle chiamate al SQL dinamico, sono nella guida. Per vedere l'output reale di questi comandi apri gli esempi.