Analizador de código concurrente

Me preguntaba si hay algún marco o aplicación (aplicación) / progtwig que pueda analizar la concurrencia de cualquier código Java.

Si la herramienta conoce todas las implementaciones de las clases y los métodos enviados de jre, entonces se trata de un simple análisis de los bloques y métodos sincronizados y sus jerarquías de llamadas. Desde aquí puede crear una red de petri y decirle con seguridad si alguna vez podría experimentar un punto muerto.

¿Estoy perdiendo algo o es realmente tan fácil? ¿Entonces debe haber alguna herramienta genial haciendo ese tipo de cosas? ¿O tal herramienta reportaría demasiados puntos muertos posibles que se salvan completamente debido a algún progtwig / lógica empresarial subyacente? ¿Las redes de Petri deberían ser lo suficientemente poderosas para manejar estas situaciones?

Esto ahorraría tantas horas de trabajo en la búsqueda de errores que podrían o no estar relacionados con problemas de locking.

Aunque se pueden encontrar (muchos) errores relacionados con la concurrencia mediante el análisis de código estático, no se aplica a todos los tipos de errores. Algunos errores solo aparecen en tiempo de ejecución bajo ciertas condiciones.

IBM tiene una herramienta llamada ConTest que “progtwig la ejecución de subprocesos del progtwig para que los escenarios de progtwigs que probablemente contengan condiciones de carrera, puntos muertos y otros errores intermitentes (llamados colectivamente problemas de sincronización) se vean obligados a aparecer con alta frecuencia”.

Esto requiere pruebas en ejecución (unidad) contra una versión instrumentada de su aplicación. Más información de fondo en este artículo de developerWorks .

Este documento describe una herramienta que realiza un análisis estático de una biblioteca y determina si es posible un interlocking.

Algo mas :

  • klocwork
  • CheckThread