Vous pouvez généralement déformer le bras d'un outil de couverture de code et obtenir un rapport indiquant les chemins qui ont été exécutés pendant un cycle donné. Ce rapport devrait montrer le code lui-même, avec les premières colonnes balisées en fonction de la notation particulière de l'outil de couverture pour savoir si un chemin donné a été exécuté. Vous pourriez être capable de l'utiliser directement, ou vous pourriez avoir à le pré-traiter et soit enlever le code qui n'a pas été exécuté, ou ajouter une nouvelle notation sur chaque ligne qui indique si elle a été exécutée (la plupart des outils seront seulement informations sur le chemin d'exposition aux points de contrôle):
donc d'un outil de couverture que vous pourriez obtenir un rapport comme celui-ci:
T- if(sometest)
{
x somecode;
}
else
{
- someother_code;
}
la T- notation indique que l'instruction if ne jamais évalué à vrai, et ainsi seulement la première partie du code exécutée. La notation plus récente 'x' indique que cette ligne a été exécutée.
Vous devriez être capable de former une regex qui ne correspond que lorsque la première colonne contient un T, F ou x afin que vous puissiez capturer toutes les instructions de contrôle exécutées et les lignes exécutées. Parfois, vous n'obtiendrez des informations de couverture qu'à chaque point de contrôle, ce qui nécessite ensuite d'analyser le fichier C et de marquer les lignes d'exécution vous-même. Pas aussi facile, mais pas impossible non plus.
Pourtant, cela ressemble à une question intéressante où la solution est probablement plus de travail que ça vaut le coup ...
-Adam