Partager via


Dépannage de la couverture du code

L'outil d'analyse de couverture du code dans Visual Studio collecte des données pour le code natif et les assemblys managés (fichiers .dll ou .exe).Toutefois, dans certains cas, la fenêtre Résultats de la Couverture du Code affiche une erreur similaire à "Résultats vide générés : …." Il existe plusieurs raisons possibles qui expliquent pourquoi cela peut se produire.Cette rubrique est conçue pour aider à résoudre ces problèmes.

Ce que vous devriez voir

Si vous choisissez une commande Analyser la Couverture du Code dans le menu Test, et si la génération et les tests se sont déroulés avec succès, vous devez alors voir une liste de résultats dans la fenêtre de Couverture du Code.Vous devrez peut-être développer les éléments pour afficher les détails.

Résultats de la couverture du code avec coloration

Pour plus d’informations, consultez Utilisation de la couverture du code pour déterminer la quantité de code testé.

Raisons possibles pour ne voir aucun résultat

JJ159523.collapse_all(fr-fr,VS.110).gifAucun test n'a été exécuté.

  • Analyse
    Vérifiez votre fenêtre de sortie.Dans la liste déroulante Afficher la Sortie à partir de , choisissez Tests.Voir s'il existe des avertissements ou des erreurs enregistrés.

  • Explication
    L'analyse de couverture du code est effectuée pendant que les tests s'exécutent.Elle inclut uniquement les assemblys chargés en mémoire lorsque le test s'exécute.Si aucun des tests n'est exécuté alors il n'y a rien à rapporter pour la couverture du code.

  • Résolution
    Dans l'Explorateur de Tests, sélectionnez Exécuter Tout pour vérifier que le test s'est déroulé avec succès.Résolvez tous les échecs avant d'utiliser Analyser la Couverture du Code.

JJ159523.collapse_all(fr-fr,VS.110).gifLes fichiers .pdb (symbole) ne sont pas disponibles

  • Analyse
    Ouvrez le dossier cible de compilation (généralement le dossier bin\debug), et vérifiez que pour chaque assembly, il existe un fichier .pdb dans le même répertoire que le fichier .dll ou .exe.

  • Explication
    Le moteur de couverture du code requiert que chaque assembly possède son fichier .pdb associé accessible pendant l'exécution du test.S'il n'existe aucun fichier .pdb pour un assembly particulier, il ne sera pas analysé.

    Le fichier .pdb doit être généré à partir de la même version que les fichiers .dll ou .exe.

  • Résolution
    Vérifiez que vos paramètres de génération génèrent le fichier .pdb.Si les fichiers .pdb ne sont pas mis à jour lorsque le projet est généré, alors ouvrez les propriétés du projet, sélectionnez la page Générer , choisissez Avancé et examinez Informations de Débogage.

    Si les fichiers .pdb et .dll ou .exe sont dans des endroits différents, copiez le fichier .pdb dans le même dossier.Il est également possible de configurer le moteur de couverture du code pour rechercher les fichiers .pdb dans un autre emplacement.Pour plus d’informations, consultez Personnalisation de l'analyse de couverture du code.

JJ159523.collapse_all(fr-fr,VS.110).gifÀ l'aide d'un fichier binaire instrumenté ou optimisé

  • Analyse
    Déterminez si le fichier binaire a subi une forme d'optimisation avancée telle que l'Optimisation Guidée par Profil, ou a été fourni par un outil de profilage tel que vsinstr.exe ou vsperfmon.exe.

  • Explication
    Si un assembly a déjà été instrumenté ou optimisé par un autre outil de profilage, l'assembly est omis de l'analyse de couverture du code.

    L'analyse de couverture du code ne peut pas être exécutée sur ce genre d'assemblys.

  • Résolution
    Fractionnez l'optimisation et utilisez une nouvelle build.

JJ159523.collapse_all(fr-fr,VS.110).gifLe code n'est pas managé (.NET) ou le code natif (C++)

  • Analyse
    Vérifiez que vous exécutez des tests sur du code managé ou C++.

  • Explication
    L'analyse de couverture du code dans Visual Studio est uniquement disponible sur du code managé ou natif (C++).Si vous utilisez des outils tiers, une partie ou la totalité du code peuvent s'exécuter sur une plateforme différente.

  • Résolution
    Aucun disponible.

JJ159523.collapse_all(fr-fr,VS.110).gifL'assembly a été installé par NGen

  • Analyse
    Vérifiez que l'assembly n'est pas chargé à partir du cache des images natives.

  • Explication
    Pour des raisons de performance, les assemblys d'image natifs ne sont pas analysés.Pour plus d’informations, consultez Ngen.exe (Native Image Generator).

  • Résolution
    Utilise une version MSIL de l'assembly.Ne pas le traiter avec NGen.

JJ159523.collapse_all(fr-fr,VS.110).gifFichier personnalisé de .runsettings avec une syntaxe incorrecte

  • Analyse
    Si vous utilisez un fichier .runsettings personnalisé, il pourrait contenir une erreur de syntaxe.

    Cela provoque l'exécution d'aucune couverture du code.Soit la fenêtre de couverture du code ne s'ouvre pas à l'issue de l'exécution du test, soit elle donne d'anciens résultats.

  • Explication
    Vous pouvez exécuter vos tests unitaires avec un fichier .runsettings personnalisé pour configurer des options de couverture du code.Les options vous permettent d'inclure ou d'exclure des fichiers.Pour plus d’informations, consultez Personnalisation de l'analyse de couverture du code.

  • Résolution
    Il existe deux types d'erreurs possibles :

  • Erreur XML

    Ouvrez le fichier .runsettings dans l'éditeur XML de Visual Studio.Recherchez les indications des erreurs.

  • Erreur d'expressions régulières

    Chaque chaîne dans le fichier est une expression régulière.Vérifiez chacune pour des erreurs, et recherchez en particulier :

    • Parenthèses non appariées (...) ou parenthèses sans séquence d'échappement \(…\).Si vous souhaitez faire correspondre une parenthèse dans la chaîne recherchée, vous devez l'échapper.Par exemple, pour correspondre à une fonction utilisez : .*MyFunction\(double\)

    • Astérisque ou plus au début d'une expression.Pour correspondre à n'importe quelle chaîne de caractères, utilisez un point suivi d'un astérisque : .*

JJ159523.collapse_all(fr-fr,VS.110).gifFichier .runsettings personnalisé avec des exclusions non valides

  • Analyse
    Si vous utilisez un fichier .runsettings personnalisé, assurez-vous qu'il inclut votre assembly.

  • Explication
    Vous pouvez exécuter vos tests unitaires avec un fichier .runsettings personnalisé pour configurer des options de couverture du code.Les options vous permettent d'inclure ou d'exclure des fichiers.Pour plus d’informations, consultez Personnalisation de l'analyse de couverture du code.

  • Résolution
    Supprimez tous les nœuds Include du fichier de .runsettings, puis supprimez tous les nœuds Exclude .Si cela résout le problème, remettez-les en étapes.

    Assurez-vous que le nœud DataCollectors spécifie la Couverture du Code.Comparez-le avec l'exemple dans Personnalisation de l'analyse de couverture du code.

Du code est toujours affiché comme non couvert

JJ159523.collapse_all(fr-fr,VS.110).gifLe code d'initialisation dans les DLL natives est exécuté avant instrumentation

  • Analyse
    Dans le code natif lié statiquement, une partie de la fonction d'initialisation DllMain et le code qu'il appelle est parfois affiché comme non couvert, même si le code a été exécuté.

  • Explication
    L'outil de couverture du code fonctionne en insérant l'instrumentation dans un assembly juste avant que l'application commence à s'exécuter.Dans n'importe quel assembly chargé avant cette fois, le code d'initialisation dans DllMain s'exécute dès le chargement de l'assembly, et avant que l'application s'exécute.Ce code apparaîtra comme étant non couvert.

    En général, cela s'applique aux assemblys chargés statiquement.

  • Résolution
    Aucun

Voir aussi

Autres ressources

Utilisation de la couverture du code pour déterminer la quantité de code testé