L’analisi statica dei programmi è l’analisi del software che viene eseguita senza eseguire effettivamente i programmi, in contrasto con l’analisi dinamica, che è l’analisi eseguita sui programmi mentre sono in esecuzione.
Gli strumenti di analisi statica sono generalmente utilizzati dagli sviluppatori come parte del processo di sviluppo e test dei componenti. L’aspetto chiave è che il codice (o altro artefatto) non viene eseguito o eseguito, ma viene eseguito lo strumento stesso, e il codice sorgente a cui siamo interessati è il dato di input allo strumento.
Questi strumenti sono usati principalmente dagli sviluppatori.
Gli strumenti di analisi statica sono un’estensione della tecnologia del compilatore – infatti alcuni compilatori offrono funzionalità di analisi statica. Vale la pena controllare cosa è disponibile dai compilatori esistenti o dagli ambienti di sviluppo prima di cercare di acquistare uno strumento di analisi statica più sofisticato.
Ecco la lista dei 10 migliori strumenti di analisi statica del codice per Java, C++, C# e Python:
Raxis
SonarQube
PVS-Studio
reshift
Embold
Collaboratore SmartBear
CodeScene Analisi comportamentale del codice
Tecnologie RIPS
Veracode
Fortify Analizzatore statico di codice
Parasoft
Coverity
CAST
CodeSonar
Capire
Come fare test di analisi statica in 6 semplici passi
Passo #1: Finalizzare lo strumento. …
Passo #2: Creare un’infrastruttura di scansione e distribuire lo strumento.
Passo #3: Personalizzare lo strumento. …
Fase #4: assegnare le priorità e salire a bordo. …
Passo #5: Analizzare i risultati. …
Passo #6: Governance e formazione. …
Riassumendo.
Cosa non può trovare l’analisi statica?
Ci sono cose che l’analisi statica non può identificare. Per esempio, l’analisi statica non può rilevare se i requisiti del software sono stati soddisfatti o come una funzione verrà eseguita. Avete bisogno di test dinamici per questo. Ecco perché l’analisi statica e il test dinamico sono complementari.
I seguenti sono i tipi di difetti trovati dagli strumenti durante l’analisi statica:
Una variabile con un valore non definito.
Interfaccia incoerente tra moduli e componenti.
Variabili dichiarate ma mai utilizzate.
Codice irraggiungibile (o) Codice morto.
Violazioni degli standard di programmazione.
Vulnerabilità di sicurezza.
Violazioni della sintassi.