Produzir uma ferramenta de análise estática útil envolve equilibrar uma série de preocupações conflitantes, incluindo pelo menos o seguinte:
- Taxa de falso positivo (alarme falso)
- Taxa de falso negativo (bug não detectado)
- Tempo de execução e escalabilidade
Os falsos positivos são uma preocupação crítica com as ferramentas de detecção de erros, pois perdem tempo do desenvolvedor. É possível eliminar falsos negativos, mas para muitos tipos de erros, incluindo erros de simultaneidade, isso envolveria um aumento inaceitável na taxa de falsos positivos. A taxa de falsos positivos e falsos negativos pode ser reduzida com o aumento do tempo de execução, mas as técnicas de análise mais precisas não vão além de pequenas aplicações e, de qualquer forma, não podem ser reduzidas a zero.
As ferramentas de análise dinâmica geralmente reivindicam uma taxa de falsos positivos de 0%, mas isso ocorre porque eles só encontram bugs quando realmente acontecem. Para uma condição de corrida ou impasse que acontece apenas uma vez na lua azul, isso não é tão útil.
Por esses motivos, o ThreadSafe não promete encontrar todos os erros de simultaneidade - ele visa encontrar os mais importantes, com uma baixa taxa de falsos positivos. Alguns usuários tentaram o ThreadSafe no código com um bug de simultaneidade conhecido que eles levaram dias para encontrar e descobriram que o bug - e muitas vezes outros erros genuínos que eles desconheciam - sem falsos positivos, em minutos.
Um bom ponto de partida para obter informações sobre o ThreadSafe é este artigo da InfoQ . Para obter mais informações, consulte o site ThreadSafe, onde você pode se inscrever para uma avaliação gratuita.
(Divulgação: ThreadSafe é uma ferramenta comercial e sou co-fundador da Contemplate, a empresa que a produz.)