L'analisi del codice statico è una tecnica che consente di identificare aree in cui la qualità del codice in analisi può essere compromessa. Notate il "potere", perché mentre in molti casi i punti che gli strumenti di analisi del codice statico fanno sono buoni, i falsi positivi (cose che vanno bene, ma sembrano abbastanza sospette allo strumento che vi dirà di loro) sono abbastanza comuni. Non è l'unica tecnica del genere, e non è necessariamente anche la migliore.
La qualità del codice, tuttavia, non è una tecnica, né uno strumento, è una caratteristica del codice e non è necessariamente un obiettivo. Tuttavia, ci sono alcuni punti che appaiono molto spesso quando si parla di qualità del codice (disclaimer: elenco non esaustivo, e potrebbero esserci sovrapposizioni tra diversi punti):
- Completezza: il codice fa tutto ciò che deve fare? Soddisfa tutti i requisiti?
- Correttezza: il codice fa ciò che fa correttamente? Ha effetti collaterali inaspettati?
- Manutenibilità: quanto è facile modificare il codice? Se devi aggiungere una nuova funzione o correggere un bug, è difficile trovare dove devi fare le modifiche? Devi apportare modifiche in molti posti anche per correzioni banali?
- Affidabilità: quanto è probabile che il codice non funzioni, per qualsiasi motivo?
- Sicurezza: le persone non autorizzate possono utilizzare il tuo codice per scopi diversi da quello a cui è destinato il codice? Presenta una vulnerabilità nel sistema?
Gli strumenti di analisi del codice statico di solito aiutano con correttezza (identificando le aree del codice in cui potresti aver commesso errori che non sono prontamente evidenti), sicurezza e manutenibilità, ma non saranno in grado di dirti molto sulla completezza, ad esempio. E anche allora, non sono perfetti e non ti diranno tutto quello che devi fare per quelle zone. Ci sono molte altre tecniche e strumenti che possono aiutare con tutte quelle e anche altre aree di qualità del codice che non ho menzionato (test automatici e recensioni di codice sono due esempi popolari, ma ce ne sono molti altri).