Pregunta

Actualmente utilizamos gcov con nuestra suite de pruebas para aplicaciones C ++ de Linux y lo hace un buen trabajo en la medición de cobertura de línea.

Puede gcov función de producción / método de informe de cobertura, además de la línea de cobertura?

En cuanto a los parámetros gcov acepta no creo que es posible, pero es posible que falte algo. O, probablemente, ¿hay alguna otra herramienta que puede producir el informe de cobertura función / método de estadísticas generadas por gcc?

Actualización: Por cobertura función / método me refiero porcentaje de las funciones que se ejecutan durante las pruebas

.
¿Fue útil?

Solución

Creo que lo que quiere decir es la opción -f, que le dará el porcentaje de líneas cubiertas por función. Hay un artículo interesante sobre gcov en Dr. de Dobb, que podría ser útil. Si "el hombre gcov" no muestra el indicador -f, comprobar si tiene una versión reasobably reciente de la suite gcc.

Editar para obtener el porcentaje de funciones no se ejecuta simplemente puede analizar a través de la salida de la cobertura función, como la cobertura de 0.00% debe ser más o menos equivalente a no llama. Este pequeño script muestra el porcentaje de funciones no ejecutados:

#!/bin/bash

if test -z "$1"
then
    echo "First argument must be function coverage file"
else
    notExecuted=`cat $1 | grep "^0.00%" | wc -l`
    executed=`cat $1 | grep -v "^0.00%" | wc -l`

    percentage=$(echo "scale=2; $notExecuted / ($notExecuted + $executed) * 100" |bc)

    echo $percentage
fi

Otros consejos

Hemos comenzado a utilizar gcov y lcov juntos. Los resultados de lcov sí incluyen el porcentaje de funciones que son ejecutadas por el "módulo" que está viendo.

EDIT: Módulo puede pasar de directorios a los archivos.

También quiero añadir que si ya está utilizando las herramientas de compilación GNU, entonces gcov / lcov no será demasiado difícil para que usted pueda obtener en ejecución y los resultados que produce son muy impresionantes.

La utilidad lcov es agradable, y lo usamos. Pero no estoy seguro si lo necesita para lo que quieres.

  1. Use ctags ( Wikipedia ; sourceforge ) para encontrar todas las funciones declaradas en los archivos de cabecera relevantes.

  2. Ejecutar gcov para obtener cobertura de línea para cada función en el binario.

  3. Comparación de la lista de funciones entre el 1 y 2 para producir "funciones llamadas", "Funciones disponibles" /.

Lo llamamos "la cobertura de la API", ya que aplicamos el paso # 1, únicamente en las cabeceras API pública. Pero se puede hacer en todos los encabezados o sólo un subconjunto como usted elija. Creo que la relación que producimos de esta manera es la relación que busca.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top