Question

À l'heure actuelle, nous utilisons gcov grâce à notre gamme de tests pour les applications Linux C ++ et il fait un bon travail à la mesure de la couverture de la ligne.

Peut-gcov rapport fonction de produits / couverture méthode en plus de la ligne de couverture?

En regardant les paramètres gcov accepte Je ne pense pas qu'il soit possible, mais je peux manquer quelque chose. Ou, probablement, est-il un autre outil qui peut produire le rapport de couverture fonction / méthode de statistiques générées par gcc?

Mise à jour: En couverture fonction / méthode que je veux dire le pourcentage de fonctions qui sont exécutées lors des tests

.
Était-ce utile?

La solution

Je suppose que ce que vous entendez est l'option -f, qui vous donnera le pourcentage de lignes couvertes par fonction. Il y a un article intéressant sur gcov Dr. de Dobb qui pourrait être utile. Si « l'homme gcov » ne montre pas l'option -f, vérifiez si vous avez une version récente reasobably de la suite gcc.

Modifier pour obtenir le pourcentage de fonctions non Exécuté vous pouvez simplement analyser par la sortie de couverture de fonction, que la couverture de 0,00% devrait être à peu près équivalent à pas appelé. Ce petit script affiche le pourcentage de fonctions non exécutées:

#!/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

Autres conseils

Nous avons commencé à utiliser gcov et lcov ensemble. Les résultats de lcov ne comprennent le pourcentage de fonctions qui sont exécutées pour le vous cherchez « module » à.

EDIT: le module peut passer des répertoires bas aux fichiers.

Je veux aussi ajouter que si vous utilisez déjà les outils du compilateur GNU, puis gcov / lcov ne sera pas trop difficile pour vous d'obtenir en cours d'exécution et les résultats qu'il produit sont très impressionnants.

L'utilitaire lcov est agréable, et nous l'utilisons. Mais je ne sais pas si vous en avez besoin pour ce que vous voulez.

  1. Utilisez ctags ( wikipedia ; sourceforge ) pour trouver toutes les fonctions déclarées dans les fichiers d'en-tête pertinents.

  2. Exécuter Gcov pour obtenir une couverture en ligne pour toutes les fonctions dans le binaire.

  3. Comparez la liste des fonctions de 1 & 2 pour produire "Fonctions" Appelés / "Fonctions disponibles".

Nous l'appelons « la couverture de l'API » puisque nous appliquons l'étape 1 uniquement aux en-têtes API publiques. Mais vous pouvez le faire sur tous les en-têtes ou seulement un sous-ensemble que vous choisissez. Je pense que le rapport que nous produisons de cette manière est le rapport que vous recherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top