← Tutta la ricercaResearch Engines / Engine 01 ↗

03 / EMBEDDED SOFTWARE ANALYSIS ENGINE

PROTOTIPO LOCALE / v0.1.1

Il codice,
con le sue evidenze.

Analizza il software C e C++ che fa funzionare dispositivi e sistemi embedded, come sensori e centraline. Aiuta gli sviluppatori a capire come sono collegati i file, trovare possibili problemi e risalire al codice segnalato, con risultati documentati.

Sorgenti Python · macOS Apple Silicon · Apache 2.0

Problema, contributo e mercato

Problema affrontato
Nei progetti embedded C/C++, è difficile capire quali file siano stati analizzati davvero e ricondurre ogni segnalazione alla regola e al codice che l’hanno generata.
Contributo rispetto allo stato dell’arte
ESAE orchestra clang-tidy e Cppcheck su una copia isolata in locale. Registra copertura, esecuzioni incomplete e origine delle segnalazioni nello stesso rapporto. Il contributo è la tracciabilità della verifica con analizzatori esistenti.
Uso commerciale possibile
Team firmware e consulenti possono provarlo per la revisione prima di un rilascio o per consegnare un rapporto tecnico riproducibile. Le segnalazioni richiedono verifica umana.
Contesto di mercato
L’analisi statica C++ ha strumenti open source e prodotti commerciali come SonarQube. Un possibile segmento è quello dei team embedded che preferiscono eseguire l’analisi in locale e documentarne la copertura.

Valore lordo potenziale per cliente, all’anno

2040 € – 8160 €

48 revisioni/anno × 0,5–2 ore risparmiate per attività × 85 €/ora.

Scenario illustrativo da verificare in un pilota, al lordo dei costi di adozione.

RiferimentiLLVM · clang-tidyCppcheckSonar · C++

BENCHMARK REALE / RIPRODUCIBILE

134.737 righe di codice reale.

Il nucleo e la CLI di Cppcheck 2.22.0, analizzati sul Mac mini M1 con una configurazione Mac arm64 C++11 verificata. GUI, test e addon esclusi.

134.737Righe fisiche uniche
85/85Unità completate
186Sorgenti e header unici
540 MiBPicco RSS analizzatore
✓ Entrambi gli analizzatori, senza errori di esecuzione o configurazioneTempo totale misurato: 11.5 minUnità di stress ricontrollate: 2

Mac mini M1 · 16 GB · macOS 27 · un solo processo analizzatore alla volta

Metodo e condizioni della prova

Il profilo conta.

01 / BASELINE

Baseline iniziale · singolo job

Prima delle correzioni di configurazione, il job si ferma parziale. Budget e contesto differiscono dalla prova qualificata: non è un confronto di velocità.

33/85 · 305 s
02 / CHECKPOINT

Profilo sequenziale con checkpoint

Una unità alla volta, 120 secondi per processo e 300 secondi nativi per unità. Nessun limite di dimensione o protezione disabilitato.

85/85 · 0 errori di analisi

Conteggio unico: gli header condivisi non vengono moltiplicati per il numero di unità. La copertura è misurata sulle unità completate, non su ogni percorso possibile del programma.

È il massimo carico qualificato finora in questa prova, non un limite universale espresso in righe.

La prova non verifica proprietà tra unità separate, WCET, assenza di race condition o certificazioni. Le diagnostiche non sono un conteggio di bug confermati. Nessuna IA utilizzata nel benchmark.

ESAE · C/C++

Conclusioni dell’esperimento

Sul Mini M1, Cppcheck e clang-tidy hanno completato tutte le 85 unità di compilazione selezionate, pari a 134.737 righe uniche, in 11 minuti e 30 secondi. Nel profilo iniziale clang-tidy ne completava 33 entro il suo limite di tempo.

Limiti della prova. Il risultato riguarda il carico e la configurazione provati. Tra i due profili sono cambiati anche i limiti e la configurazione, quindi i tempi non misurano uno speedup. La scansione non certifica il software.

Validazione su casi controllati

Accanto al benchmark su codice reale, usiamo un piccolo progetto con difetti noti e codice corretto di confronto. Serve a verificare il comportamento degli analizzatori sui casi previsti. Il report originale conserva versione, condizioni e risultati della prova.

ESAE · DEMO

Conclusioni dell’esperimento

Gli analizzatori hanno trovato tutti e quattro i difetti inseriti nel caso controllato: accesso fuori limite, puntatore nullo, valore non inizializzato e perdita di memoria.

Limiti della prova. La prova riguarda solo i casi predisposti. Non quantifica la capacità di trovare difetti in altri programmi né verifica le condizioni di gara, i tempi massimi o il comportamento sull’hardware.

Sapere anche cosa non sappiamo.

01

Segnalato dagli analizzatori

File, riga, regola, gravità ed evidenze di Cppcheck e clang-tidy. Un rilievo del tool richiede una verifica ingegneristica.

02

Indicato dalle regole embedded

Allocazioni, chiamate potenzialmente bloccanti, nomi ISR, ricorsione e dati condivisi candidati. Sono indicatori di rischio: possono produrre falsi positivi.

03

Spiegato dall’IA, se la scegli

Ollama locale può spiegare un rilievo e suggerire test. Ogni risposta rimane un’ipotesi collegata al risultato originale; nessuna modifica automatica.

LOCAL / BY DESIGN

Il tuo computer è il laboratorio.

Il sito presenta il progetto. GitHub distribuisce sorgenti e report. FastAPI e gli analizzatori si avviano sul tuo Mac: il VPS non riceve repository e non esegue scansioni.

Sorgenti originali in sola lettura. Nessun cloud o telemetria. Risultati conservati sul computer locale.

GET STARTED

Dal download alla prima analisi.

Prerequisiti: Python 3.12 e Apple Command Line Tools. v0.1 collaudata su Mac mini M1 con macOS 27. Windows e Linux non ancora qualificati.

  1. 01

    Scarica ed estrai

    Un archivio del progetto, con demo, test e documentazione. Questa versione è un prototipo sorgente, non un installer firmato come Appunti.

  2. 02

    Prepara il motore

    Il setup esplicito installa dipendenze con hash fissati e compila Cppcheck nella cartella del progetto. Internet serve alla prima preparazione.

    python3.12 scripts/setup.py
  3. 03

    Apri la dashboard locale

    Avvia ESAE, visita http://127.0.0.1:4196 e premi “Analizza repository”. Di partenza è autorizzato soltanto il nostro demo.

    ./Avvia-ESAE.command
Istruzioni complete

ENGINEERING / WORKFLOW

Più chiarezza nelle tue verifiche.

ESAE affianca gli sviluppatori nella comprensione e nella revisione del codice, organizzando i rilievi degli analizzatori in evidenze consultabili. La mappa delle dipendenze rende visibili i collegamenti tra i file e aiuta a individuare le aree da approfondire. I risultati si integrano con i test, la validazione e le verifiche specialistiche previste dal progetto.

Approfondisci l’ambito d’uso