Producir una herramienta útil de análisis estático implica equilibrar una serie de preocupaciones conflictivas, que incluyen al menos las siguientes:
- Tasa de falsos positivos (falsa alarma)
- Tasa de falso negativo (error no detectado)
- Tiempo de ejecución y escalabilidad
Los falsos positivos son una preocupación crítica con las herramientas de detección de errores, ya que pierden el tiempo del desarrollador. Es posible eliminar los falsos negativos, pero para muchos tipos de errores, incluidos los errores de concurrencia, esto implicaría un aumento inaceptable en la tasa de falsos positivos. La tasa de falsos positivos y falsos negativos se puede disminuir a costa de un mayor tiempo de ejecución, pero las técnicas de análisis más precisas no escalan más allá de las aplicaciones pequeñas, y de todos modos no se pueden reducir a cero.
Las herramientas de análisis dinámico a menudo reclaman una tasa de falsos positivos del 0%, pero eso se debe a que solo encuentran errores una vez que realmente ocurren. Para una condición de carrera o un punto muerto que solo ocurre una vez en una luna azul, eso no es tan útil.
Por estas razones, ThreadSafe no promete encontrar todos los errores de simultaneidad: su objetivo es encontrar los más importantes, con una baja tasa de falsos positivos. Algunos usuarios han probado ThreadSafe en código con un error de concurrencia conocido que tardaron días en encontrar, y descubren que encuentra ese error, y a menudo otros errores genuinos que no sabían, sin falsos positivos, en cuestión de minutos.
Un buen lugar para comenzar a obtener información sobre ThreadSafe es este artículo de InfoQ . Para obtener más información, visite el sitio web de ThreadSafe donde puede registrarse para obtener una prueba gratuita.
(Divulgación: ThreadSafe es una herramienta comercial, y soy cofundador de Contemplate, la compañía que lo produce).