La produzione di uno strumento di analisi statica utile comporta il bilanciamento di una serie di problemi contrastanti, inclusi almeno i seguenti:
- Frequenza falsa positiva (falso allarme)
- Percentuale di falso negativo (errore non rilevato)
- Tempo di esecuzione e scalabilità
I falsi positivi sono una preoccupazione fondamentale per gli strumenti di rilevamento dei bug poiché perdono tempo nello sviluppatore. È possibile eliminare i falsi negativi, ma per molti tipi di bug, compresi i bug di concorrenza, ciò comporterebbe un aumento inaccettabile del tasso di falsi positivi. Il tasso di falsi positivi e falsi negativi può essere ridotto al costo di un aumento del tempo di esecuzione, ma le tecniche di analisi più accurate non vanno oltre le piccole applicazioni e comunque non possono essere entrambe ridotte a zero.
Gli strumenti di analisi dinamica spesso richiedono un tasso di falsi positivi dello 0%, ma è perché trovano bug solo una volta che si verificano effettivamente. Per una condizione di gara o deadlock che si verifica solo una volta in una luna blu, non è così utile.
Per questi motivi, ThreadSafe non promette di trovare tutti i bug di concorrenza - mira a trovare quelli più importanti, con un basso tasso di falsi positivi. Alcuni utenti hanno provato ThreadSafe sul codice con un bug noto della concorrenza che impiegano giorni per trovare e scoprono che trova bug - e spesso altri bug genuini di cui non erano a conoscenza - senza falsi positivi, in pochi minuti.
Un buon punto di partenza per informazioni su ThreadSafe è questo articolo InfoQ . Per ulteriori informazioni, consulta il sito Web ThreadSafe dove puoi registrarti per una prova gratuita.
(Disclosure: ThreadSafe è uno strumento commerciale e sono co-fondatore di Contemplate, la società che lo produce.)