¿Alguna herramienta para validar tu código?

Estoy trabajando en una gran base de código no tan antigua con toneladas de pruebas unitarias.

La cobertura del código es bastante buena, pero he notado que hay muchas pruebas sin assertnada.

El código cambió y las afirmaciones de algunas pruebas solo se comentaron. Otras pruebas fueron marcadas con Ignored()o fueron totalmente comentadas.

¿Alguna herramienta que pueda escanear una base de código para encontrar tales problemas?

No tiene que ser específico para probar.

Respuestas (1)

Algunos trucos que se pueden usar para identificar elementos en una gran base de código que en realidad no hacen nada es usar una herramienta de documentación de código como doxygen con opciones para mostrar el gráfico de llamadas y el gráfico de llamadas y buscar todos los elementos que no tienen llamadas (no la prueba real está comentada), o ninguna persona que llama (la llamada a la prueba está comentada), mirar los archivos .dot con un script puede hacer esto; esto al menos encontrará las pruebas que se eliminaron o tienen todas las contenido comentado y algunos deshabilitados con modificadores del compilador.

El siguiente truco es usar una herramienta de cobertura de código, como gcov , en las pruebas reales (crear con ella especificada), ejecutar todas las pruebas y luego analizar el archivo de cobertura en busca de líneas o grupos de líneas con 0 conteos de ejecución. Esto identificará aquellas pruebas que, por una u otra razón, hacen poco o nada, (banderas condicionales del compilador, early return(PASS), etc.) .

El tercero es mirar el código de evaluación de la prueba para determinar todos los mecanismos de ignorar (tenga cuidado, a veces hay varios), como banderas de ignorar, contribución de resultado de 0, etc. y buscar instancias de ellos.

Posiblemente, lo más fácil es obtener una estimación de la cantidad de resultados de prueba que espera y compararla con la cantidad que obtiene.

La otra cosa a tener en cuenta son los reintentos: en la mayoría de los casos, una prueba simplemente debe fallar o pasar, o si se ejecuta varias veces, cada ejecución debe contribuir al resultado. el campo, nunca funcionan, a veces funcionan o a veces tardan mucho tiempo en funcionar; estos son una pesadilla para encontrarlos más tarde.

Hay algunos analizadores estáticos que pueden detectar código inalcanzable, pero la mayoría de los buenos que he encontrado son caros y tienden a usarse solo en el campo crítico de seguridad.