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

Outils Delphi Discussion :

Couverture de code + DelphiCodeCoverageWizard


Sujet :

Outils Delphi

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut Couverture de code + DelphiCodeCoverageWizard
    Salut !

    Un petit message pour ceux qui connaissent delphi-code-coverage.
    Je viens de créer un petit outil tout simple pour faciliter le lancement de cet outil.
    Le project s'appelle DelphiCodeCoverageWizard. (ok, je me suis pas foulé pour le nom )

    Pour celles & ceux qui ne connaissent pas delphi-code-coverage, il s'agit d'un outil très simple de couverture de code qui génère un rapport complet de l'execution de chaque ligne de code d'un projet executable delphi.
    Très utile pour les tests unitaires par exemple.

    N'hésitez pas à poser vos questions si besoin.
    Images attachées Images attachées  
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  2. #2
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Je ne savais même pas que ça existait merci pour l'info et merci d'avoir partager avec la communauté Delphi ton travail.
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut
    Je l'avais découvert un peu par hasard l'année dernière.
    Je m'en sert bcq pour mesurer la couverture de test unitaire (DUnit).

    On peut se demander pourquoi ce n'est pas inclut avec Delphi ...
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  4. #4
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut


    Je ne connaissais pas delphi-code-coverage moi non plus.
    Le hasard fait bien les choses, j'étais justement en train de me dire qu'il faudrait que je trouve un outil du même type .

    Je viens de faire un test, j'ai rencontré quelques petits soucis :
    1. Il faut faire attention à ce que CodeCoverage.exe fasse parti du PATH système.

    2. Dans ton assistant graphique, lorsque je sélectionne l'exe à tester, tu ajoutes automatiquement les double quotes sur le chemin complet. En revanche, ils n'y sont pas dans le fichier .bat généré pour lancer CodeCoverage. Evidemment, j'ai des espaces dans le chemin de l'exe et du coup, CodeCoverage ne se lançait pas .

    3. On choisit un emplacement pour le répertoire des rapports en fin d'exécution. Lorsque tu crées le .bat, tu ajoutes automatiquement report à la fin de l'emplacement qui a été indiqué. Du coup je me retrouve avec un report\report. De plus le répertoire n'est pas créé automatiquement s'il n'existe pas. Et apparemment, s'il n'existe pas au lancement de CodeCoverage, il ne se créé pas automatiquement et les rapports ne sont pas générés . J'ai passé un moment à chercher où ils étaient...

    J'ai fait le test sur la totalité de notre projet (2 000 000 lignes de code), juste pour voir ce que ça donne.
    CodeCoverage a été assez long à démarrer, mais ce détail mis à part, il a très bien géré la volumétrie.
    La génération des rapports a été un peu longue (800 fichiers, 200Mo généré) mais ça reste correcte.

    Les résutlats sont intéressants.

    Merci pour ta contribution

    PS: Delphi Code Coverage est présenté comme étant un outil pour Delphi 2010, mais j'ai fait le test avec BDS2006, ça marche très bien.
    Vu la façon dont il fonctionne, ça doit fonctionner avec n'importe quelle version de Delphi (et je pense même, pas seulement avec Delphi).

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut
    1. Il faut faire attention à ce que CodeCoverage.exe fasse parti du PATH système.
    Oui, tu as raison. Il faut que je rajoute le chemin vers l'EXE ou le mettre dans le PATH.

    double quotes sur le chemin complet
    Confirmé !

    Lorsque tu crées le .bat, tu ajoutes automatiquement report à la fin de l'emplacement qui a été indiqué.
    Ha ben il est beau celui-là !

    J'ai fait le test sur la totalité de notre projet (2 000 000 lignes de code)
    Sympa sur ce genre de projet. Tu as des tests unitaires ou tu as juste executé 'manuellement' le programme ?

    Merci pour ta contribution
    De rien, et merci pour la tienne. Pour un proto réalisé en quelques minutes, il manque encore bqc de chose ... sauf les bugs, ça y'en a à la pelle carrée

    Tu utilises des commentaires formatté dans ton code ?
    Perso, ça m'interresserai que tu essayes DelphiCodeToDoc.
    http://dephicodetodoc.sourceforge.net/

    J'ai rentré les bugs dans google code, voici les liens.
    Je vais les corriger dans la foulée.

    http://code.google.com/p/delphi-code...es/detail?id=3
    http://code.google.com/p/delphi-code...es/detail?id=4
    http://code.google.com/p/delphi-code...es/detail?id=5
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  6. #6
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par trident_job Voir le message
    Sympa sur ce genre de projet. Tu as des tests unitaires ou tu as juste executé 'manuellement' le programme ?
    Euh.... joker
    Quand je suis arrivé, l'appli avait déjà 10 ans d'existance, et ils n'avaient même pas de SCM. Autant dire qu'on a un très gros travail à faire...

    Citation Envoyé par trident_job Voir le message
    Tu utilises des commentaires formatté dans ton code ?
    Perso, ça m'interresserai que tu essayes DelphiCodeToDoc.
    http://dephicodetodoc.sourceforge.net/
    A dire vrai, je suis plutôt partisant des commentaires XML. Ils ont l'avantage d'être assez standards, et surtout pris en compte dans HelpInsight. Comme ça dans l'IDE, tu poses le curseur de la souris au dessus de la méthode que tu es en train d'appeler, et tu as sa doc et la description des paramètres qui s'affichent directement en dessous... (enfin quand ça veut bien marcher)

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut v0.2
    Franck, et les autres !

    je viens de faire une release v0.2 qui corrige les 3 problèmes remontés.
    http://code.google.com/p/delphi-code-coverage-wizard/

    Encore tous mes remerciements pour ta contribution.

    TridenT
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Bonjour,

    Je n'ai pas bien compris l'intérêt de Code-Coverage...quelqu'un peut m'expliquer ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Je n'ai pas bien compris l'intérêt de Code-Coverage...quelqu'un peut m'expliquer ?
    Bonjour Paul, je vais prendre plusieurs cas d'utilisation pour expliquer.

    1/ Trouver du code mort
    Il arrive que lorsque des projets grandissent, plus personne ne sait si toutes les classes/fonctions sont vraiment utiles ... mais personne ne veut les enlever, de peur que qqch ne marche plus.

    Une solution est de pouvoir exécuter l'application, de lancer toutes les fonctionnalités et de connaitre les lignes de code qui n'ont pas été exécutées pendant cette exécution. C'est soit du code qui ne sert à rien, soit un cas particulier d'une fonctionnalité.

    La couverture de code rempli ce rôle, tu as le détail complet ligne par ligne de l'exécution (ou non) du code source.

    2/ Couverture de test

    Dans le cas d'écriture de tests unitaires (avec DUnit par exemple en Delphi) ou même de test manuel, on aimerait savoir quelle part du code source les tests couvrent : Si mes tests couvrent >80% du code, cela veut dire que durant mes tests j'ai exécuté >80% des fonctionnalités du produit, ce qui est déjà pas mal.
    So par contre j'ai 20% ... et bien j'ai du boulot à faire, parce que beaucoup de cas ne sont pas encore testés.

    voilà, j'espère que cela eclaire l'outil de couverture de code.
    Sinon, n'hésite pas à me préciser ce qui est obscur.
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Merci pour ces précisions.

    Cependant le code mort est détecté par le compilateur, il n'est pas présent dans l'exécutable et de petites pastilles de couleurs indique dans l'IDE les lignes utiles..

    ceci dit il peut être intéressant d'avoir cela sous forme de rapport...pourquoi pas.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Cependant le code mort est détecté par le compilateur, il n'est pas présent dans l'exécutable et de petites pastilles de couleurs indique dans l'IDE les lignes utiles..
    Non, tu parles du code non lié en statique, donc non lié (non compilé quoi).
    C'est different! Exemple : je crée une classe dans mon projet sans la référencer unl part ... elle est optimisée est supprimée.

    Exemple, pour grossir le truc : Tu as un dans un menu une commande 'Fonctionnalité4' qui déclenche tout un tas de chose et met en oeuvre plusieurs classes.

    Tout cela est compilé par delphi, vu qu'il y a un lien statique entre toutes ces classes.

    Mais du point de vu utilisateur, cette fonctionnalité ne sert plus, elle ne marche même pas ! Si pàendant mes tests, je ne clique pas sur ce menu, je vais voir rapidement dans le rapport qu'il y a des lignes coir des classes entières qui ne sont pas utilisées.

    Le mieux est d'essayer toi même sur un de test softs, ou sur un exemple!
    C'est très rapide, surtout avec le wizard que j'ai fait : DelphiCodeCoverageWizard, 1 minute suffit pour avoir ton rapport.
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  12. #12
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut
    Je te renvoi aussi vers un post qui met en oeuvre la couverture de test dans un outil d'integration continue :
    http://www.developpez.net/forums/d10...secontrol-net/

    Et voici un exemple de rapport des tests unitaires sous DelphiCodeToDoc (un autre outil open source).
    Fichiers attachés Fichiers attachés
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  13. #13
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    oui j'avais testé sur un soft à moi...en même temps mes softs sont bien faits ^^

    ceci il me détecte des portions de code jamais utilisées...car elles correspondent à des cas de figure non présents dans mes tests...et en dehors de tests unitaires complets, difficile de déterminer qu'un code n'est pas utile

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     if Score > 100000 then
       ShowMessage('Tu casses la baraque !');
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Points : 461
    Points
    461
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ...car elles correspondent à des cas de figure non présents dans mes tests..
    oui, c'est bien le but !
    Ca te permet de voir s'il faut enrichir les tests, genre test de robustesse, test aux limites, tests des cas d'erreurs etc.
    Delphi + JavaDoc = DelphiCodeToDoc
    http://dephicodetodoc.sourceforge.net/

    TridenT Dev blog
    http://tridentjob.blogspot.fr/

  15. #15
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par trident_job Voir le message
    oui, c'est bien le but !
    Ca te permet de voir s'il faut enrichir les tests, genre test de robustesse, test aux limites, tests des cas d'erreurs etc.
    ah ben oui en effet si le but est de couvrir 100% du code avec des tests unitaire, ça donne tout son intérêt
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Cependant le code mort est détecté par le compilateur, il n'est pas présent dans l'exécutable et de petites pastilles de couleurs indique dans l'IDE les lignes utiles..
    Euh... elles sont où, les pastilles de couleur ?
    Pourquoi j'ai pas de pastilles de couleur, moi ?
    J'ai que des points verts...

    Edit : ne pas se leurrer par la forme, la question est sérieuse. Je vais prendre les choses sur un autre registre : cette fonctionnalité est-elle absente de la version pro, y a-t-il une option à valider (j'ai passé un moment à fouiner dans les options de l'éditeur) ? Un telle fonctionnalité me serait grandement utile, merci.

Discussions similaires

  1. Outil de couverture de code gratuit plugin eclipse
    Par tx dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 20/04/2007, 15h22
  2. Couverture de code PL/SQL
    Par jproto dans le forum PL/SQL
    Réponses: 5
    Dernier message: 05/03/2007, 10h48
  3. Réponses: 1
    Dernier message: 16/02/2007, 10h05
  4. [DjUnit] Couverture de code
    Par maxtin dans le forum Qualimétrie
    Réponses: 1
    Dernier message: 12/02/2007, 14h16

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