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.

ComandoChe cosa fa
initCrea l'area di lavoro: cartelle, impostazioni locali, database SQLite.
app add · app listRegistra e elenca le applicazioni da analizzare.
database testProva la connessione a SQL Server e i permessi dell'account.
scanAnalizza codice e database e salva un'istantanea immutabile.
statusStato dell'applicazione e dell'ultima scansione, con la copertura.
export human · export llmDocumentazione per le persone e knowledge per gli agenti AI.
searchRicerca full-text nel modello di conoscenza.
contextContext pack con budget di token per un agente.
impactChe cosa può toccare la modifica di un elemento.
diffDifferenze tra due scansioni.
api serveAPI locale di lettura, solo loopback, protetta da token.
mcp serveServer 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

AreaContenuto
ScopertaProgetti, 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 CoreController, azioni, route, endpoint minimal API, pagine Razor, viste MVC, menu e permessi ([Authorize], ruoli, policy).
Accesso ai datiEF Core, Dapper e ADO.NET: quali classi leggono o scrivono quali tabelle, con segnalazione dell'SQL dinamico.
Regole di businessAutorizzazione, validazione, vincoli, calcoli, transizioni di stato, ognuna con condizione, effetto e codice di origine.
Database SQL ServerTabelle, colonne, vincoli, indici, viste, procedure, funzioni, trigger, sinonimi, sequenze, extended property e dipendenze. Solo schema: i dati delle tabelle non vengono mai letti.
CorrelazioneCollega 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.

OpzioneEffetto
--source-onlySalta il database: analizza solo il codice.
--database-onlySalta il codice: estrae solo lo schema.
--incrementalRiusa 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 non raggiungibile: la scansione non si ferma. Emette il warning 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.

CartellaContenuto
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/

Ricerca full-text (SQLite FTS5) con glossario bilingue italiano/inglese. Si può filtrare e partire da un elemento noto.

OpzioneEffetto
--queryTesto da cercare (obbligatorio).
--typeTipo di entità: page, table, stored_procedure, business_rule, service, …
--module · --fileSolo un modulo, oppure solo elementi con evidenza in un file il cui percorso contiene il testo.
--related-to · --relationshipSolo elementi direttamente collegati a un id stabile, per tipo di relazione (READS, WRITES, CALLS, …).
--modefulltext (predefinito) oppure name.
--limit · --scanNumero 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.

OpzioneEffetto
--max-tokensBudget stimato (predefinito 12000). La stima è caratteri / 4 e il pack la dichiara approximate.
--max-charactersLimite rigido aggiuntivo sui caratteri.
--include-evidenceAggiunge la sezione EVIDENCE con file e righe.
--max-depthProfondità 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.

EndpointFunzione
GET/POST /applications, GET /applications/{id}Elenco, registrazione, riepilogo.
POST /applications/{id}/scansAvvia una scansione in modo asincrono (full, source-only, database-only, incrementale). Una alla volta.
GET /applications/{id}/knowledge, /entities, /relationshipsPanoramica e navigazione paginata.
POST /applications/{id}/search, /context, /impactGli stessi motori della CLI.
GET /applications/{id}/export/human, /export/llmL'export come archivio ZIP.

Server MCP

mcp serve parla MCP su stdio e non può scrivere: i dieci tool sono tutti di lettura.

ToolRestituisce
sie_list_applicationsApplicazioni registrate con scansione attiva.
sie_get_overviewConteggi per tipo, moduli, copertura e warning.
sie_searchRicerca con id stabile, tipo, nome e file.
sie_get_pagePagina, dati letti e scritti, permessi, evidenze.
sie_get_tableTabella, colonne, relazioni, evidenze.
sie_get_business_ruleCondizione, effetto, origine ed elementi governati.
sie_get_dependenciesDipendenze in ampiezza, con confidenza per passo.
sie_get_relationshipsRelazioni dirette per tipo e direzione.
sie_generate_contextContext pack con budget di token.
sie_analyze_impactAnalisi 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 CONNECT e VIEW 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, *.pfx e *.pem non sono mai letti e appsettings*.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.

SezioneContenuto
StorageProvider (sqlite) e percorso del database.
AnalysisMaxParallelism, AnalyzeLegacyProjects, MaxFileSizeMb.
DatabaseProvider predefinito, timeout dei comandi, ReadOnlyRequired.
ExportQuali formati produrre: human, llm, Mermaid, CSV.
SearchProvider 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.