IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres éditeurs Discussion :

Test unitaire : mesure de recouvrement de code


Sujet :

Autres éditeurs

  1. #1
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut Test unitaire : mesure de recouvrement de code
    Salut à tous,

    Voilà je me demandais si un tel outil existait pour le c++?
    Un "quelque chose" qui permettrait de voir le code qui est réellement testé.
    En fait fait comme Clover pour le java.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Il n'y a rien pour le C++ à ma connaissance. Des trucs pour GCC, des trucs pour SunWSPro, probablement pour VC aussi.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre actif
    Profil pro
    Ingenieur
    Inscrit en
    Décembre 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingenieur

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Points : 280
    Points
    280
    Par défaut
    Au boulot j ai deja utilise BullsEye: http://www.bullseye.com/

    Ca marche assez bien. Si je me souviens bien c est base sur un front end g++ qui itnercepte les appels aux compilos pour instrumenter le code.
    Les resultats sous formes graphiques sont assez faciles a lire et peuvent etre concatenes...
    par contre c est une solution proprietaire payante

    Petite precision : je l ai utilise en envirnoment Solaris ou Linux

  4. #4
    Membre actif
    Profil pro
    Ingenieur
    Inscrit en
    Décembre 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingenieur

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Points : 280
    Points
    280
    Par défaut
    Dans le tutoriel gcc on parle d un analyseur de couverture de code, ça ne repond pas a ton besoin ?

  5. #5
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut Test unitaire: mesure de recouvrement de code
    Bonjour,

    J'ai le même besoin, mis à part que je cherche plutôt pour du langage C. En gratuit bien sur...

    Il me parait étonnant qu'en 2007, rien n'existe.

    Merci
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    gcc et gcov, ca ne te convient pas ?

  7. #7
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Je suis sous Windows (autant pour moi j'aurais du le préciser).

    L'idéal étant quelque chose qui fonctionne avec un IDE (Visual, C++Builder ou CodeBlocks...).
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 508
    Points
    5 508
    Par défaut
    Citation Envoyé par Bayard
    Je suis sous Windows (autant pour moi j'aurais du le préciser).

    L'idéal étant quelque chose qui fonctionne avec un IDE (Visual, C++Builder ou CodeBlocks...).
    Je n'ai pas vérifié, mais je crois que gcov fait partie de la distribution MinGW. Je me trompe? Je n'ai pas de Windows tout de suite sous la main pour confirmer...

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par mujigka
    Je n'ai pas vérifié, mais je crois que gcov fait partie de la distribution MinGW. Je me trompe? Je n'ai pas de Windows tout de suite sous la main pour confirmer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Microsoft Windows XP [version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
     
    C:\>dir /s gcov.*
     Le volume dans le lecteur C s'appelle BOOT
     Le numéro de série du volume est 4C05-16D3
     
     Répertoire de C:\CodeBlocks\bin
     
    24/05/2005  11:17            26 112 gcov.exe
                   1 fichier(s)           26 112 octets
     
     Répertoire de C:\CodeBlocks\man\man1
     
    23/05/2005  22:31            23 683 gcov.1
                   1 fichier(s)           23 683 octets
     
     Répertoire de C:\Dev-Cpp\bin
     
    30/01/2005  00:35            26 112 gcov.exe
                   1 fichier(s)           26 112 octets
    hé hé ...
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Microsoft Windows XP [version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
     
    C:\>dir /s gcov.*
     Le volume dans le lecteur C s'appelle BOOT
     Le numéro de série du volume est 4C05-16D3
     
     Répertoire de C:\CodeBlocks\bin
     
    24/05/2005  11:17            26 112 gcov.exe
                   1 fichier(s)           26 112 octets
     
     Répertoire de C:\CodeBlocks\man\man1
     
    23/05/2005  22:31            23 683 gcov.1
                   1 fichier(s)           23 683 octets
     
     Répertoire de C:\Dev-Cpp\bin
     
    30/01/2005  00:35            26 112 gcov.exe
                   1 fichier(s)           26 112 octets
    hé hé ...
    Sauf que ça génère des erreurs :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    convert.c:51: undefined reference to `__gcov_init'
    convert.c:27: undefined reference to `__gcov_merge_add'
    convert2.c:60: undefined reference to `__gcov_init'
    convert2.c:19: undefined reference to `__gcov_merge_add'
    erreurs.c:106: undefined reference to `__gcov_init'
    erreurs.c:109: undefined reference to `__gcov_merge_add'
    str.c:181: undefined reference to `__gcov_init'
    str.c:22: undefined reference to `__gcov_merge_add'
    main.c:339: undefined reference to `__gcov_init'
    main.c:252: undefined reference to `__gcov_merge_add'

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gege2061
    Sauf que ça génère des erreurs :
    [code=x]convert.c:51: undefined reference to `__gcov_init'
    convert.c:27: undefined reference to `__gcov_merge_add'
    <...>
    Il faut peut être ajouter une bibliothèque au projet. Au pif :
    libgcov.a ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Microsoft Windows XP [version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
     
    C:\dev\rieu\server>cd \codeblocks
     
    C:\CodeBlocks>dir /s *gcov*.*
     Le volume dans le lecteur C s'appelle BOOT
     Le numéro de série du volume est 4C05-16D3
     
     Répertoire de C:\CodeBlocks\bin
     
    24/05/2005  11:17            26 112 gcov.exe
                   1 fichier(s)           26 112 octets
     
     Répertoire de C:\CodeBlocks\lib\gcc\mingw32\3.4.4
     
    23/05/2005  22:31             9 772 libgcov.a
                   1 fichier(s)            9 772 octets
     
     Répertoire de C:\CodeBlocks\man\man1
     
    23/05/2005  22:31            23 683 gcov.1
                   1 fichier(s)           23 683 octets
     
         Total des fichiers listés :
                   3 fichier(s)           59 567 octets
                   0 Rép(s)   4 205 621 248 octets libres
     
    C:\CodeBlocks>
    hé hé (bis)
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    hé hé (bis)
    ça marche super

  13. #13
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Juste une question... comment s'en servir ?

    Est-ce utilisable depuis l'interface homme machine codeblocks ?
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Bayard
    Juste une question... comment s'en servir ?

    Est-ce utilisable depuis l'interface homme machine codeblocks ?
    Peut être (outils externes), mais il faut commencer par apprendre à l'utiliser en mode ligne de commande, ce que je ne sais pas faire pour le moment.

    Je commencerais par lire ceci :

    http://c.developpez.com/tutgcc/c1580.php
    Pas de Wi-Fi à la maison : CPL

  15. #15
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Bayard
    Juste une question... comment s'en servir ?
    • Suffit d'ajouter les options -fprofile-arcs et -ftest-coverage à la compilation et -lgcov (sûrement associé à -L puisque la bibliothèque est dans le répertoire de gcc) pour l'édition des liens.
    • Une fois compilé, tu exécute ton programme
    • Tu obtiens deux nouveaux fichiers par fichier sources (extension gcov et gcda)
    • Exécute la commande gcov dans ce répertoire suivie du nom du fichier source à analyser (sans extension)

  16. #16
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Bon, ben j'ai enfin pris 5 mn pour essayer: cela fonctionne.

    Est-ce que quelqu'un sais comment obtenir un résutat OK(100%)/KO plutôt
    que d'avoir à tester "visuellement" toutes les lignes

    function XXX called 1 returned 100% blocks executed 100%
    jusqu'à trouver une ligne
    function XXX called 1 returned 100% blocks executed 2%
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  17. #17
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    depuis, j'ai utilisé gcov et lcov aussi.
    Merci pour les réponses.

  18. #18
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 50
    Points
    50
    Par défaut Re :
    j'en profite pour vous poser quelques questions sur gcov également ...

    J'ai créé un .bat dans lequel j'ai écrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    echo script_genGcov.bat
     
    sparc-threadx-gcov.exe -fprofile-arcs -ftest-coverage -lgcov C:\home\cgarcia\workspace\GericosBlocks\sources\gericos\blocks\memory\GsbMemoryTest.cpp
     
    sparc-threadx-gcov.exe C:\home\cgarcia\workspace\GericosBlocks\sources\gericos\blocks\memory\GsbMemoryTest
     
    pause
    Voici ce que j'obtiens à la compilation et après ajout de libgcov.a dans mon projet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    C:\opt\eclipse>echo script_genGcov.bat
    script_genGcov.bat
     
    C:\opt\eclipse>sparc-threadx-gcov.exe -fprofile-arcs -ftest-coverage -lgcov C:\home\cgarcia\workspace\GericosBlocks\sources\gerico
    s\blocks\memory\GsbMemoryTest.cpp
    sparc-threadx-gcov.exe: invalid option -- r
    Usage: gcov [OPTION]... SOURCEFILE
     
    Print code coverage information.
     
      -h, --help                      Print this help, then exit
      -v, --version                   Print version number, then exit
      -a, --all-blocks                Show information for every basic block
      -b, --branch-probabilities      Include branch probabilities in output
      -c, --branch-counts             Given counts of branches taken
                                        rather than percentages
      -n, --no-output                 Do not create an output file
      -l, --long-file-names           Use long output file names for included
                                        source files
      -f, --function-summaries        Output summaries for each function
      -o, --object-directory DIR|FILE Search for object files in DIR or called FILE
      -p, --preserve-paths            Preserve all pathname components
      -u, --unconditional-branches    Show unconditional branch counts too
     
    For bug reporting instructions, please see:
    <URL:http://gcc.gnu.org/bugs.html>.
     
    C:\opt\eclipse>sparc-threadx-gcov.exe C:\home\cgarcia\workspace\GericosBlocks\sources\gericos\blocks\memory\GsbMemoryTest
    C:\home\cgarcia\workspace\GericosBlocks\sources\gericos\blocks\memory\GsbMemoryTest.gcno:cannot open graph file
     
    C:\opt\eclipse>pause
    Appuyez sur une touche pour continuer...
    Je n'ai la création d'aucun fichier et donc il est impossible de les ouvrir pour les exécuter.

    De plus, j'ai l'erreur 'invalid option -- r' que je comprends pas.

    J'ai pourtant suivi les phases d'utilisation, il me semble.
    J'ai du oublier quelque chose ou avoir mal compris.

    Merci d'avance pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD19] Couverture du code & test unitaire
    Par tunizar dans le forum WinDev
    Réponses: 8
    Dernier message: 06/10/2014, 14h59
  2. test unitaire de code C en cunit
    Par Ckristopher dans le forum C
    Réponses: 3
    Dernier message: 05/11/2012, 12h12
  3. JUnit 4 problème écriture test unitaire et code coverage
    Par Tibzz dans le forum Général Java
    Réponses: 0
    Dernier message: 07/09/2011, 19h05
  4. Mesure de la RAM et CPU pour tests unitaires
    Par polymorphisme dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 06/06/2011, 10h38
  5. [TESTS] Tests unitaires
    Par mathieu dans le forum Test
    Réponses: 4
    Dernier message: 08/01/2004, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo