2009-02-01 6 views
2

Je suis en train d'écrire un petit outil pour soutenir certains de couverture de code tests que nous courons dans mon entreprise.Rédaction d'un outil pour soutenir les tests de couverture de code

Voici mon exigence de l'outil -

Entrée - Liste des fichiers (Cpp et .h) qui ont été modifiés (comme une partie d'un check-in changelist)

Sortie - Toutes les fonctions qui ont été ajoutées ou modifiées dans la source (à la suite de l'enregistrement de la modification).

Une idée de comment je peux y arriver? En gros, cela se résume à ce que les lignes ont changé et quelle est la fonction associée aux lignes modifiées ...

Plus d'info - Control Source: Perforce Plate-forme: Windows

Répondre

2

Cela semble difficile. Et je ne suis pas sûr de ce que vous feriez avec les informations sur les fonctions modifiées dans la source. Vous ne voulez pas limiter votre couverture de code à ces fonctions: il se peut qu'une fonction modifiée affecte la couverture d'une fonction inchangée.

Peut-être la meilleure chose à faire est de lancer simplement tous vos tests sur chaque check-in, ou une fois par heure, si quelque chose a changé. Ensuite, vous pouvez ignorer la création d'un outil complexe et obtenir de meilleurs résultats de toute façon.

0

Comme tous les fichiers sont archivés dans Perforce, vous pourriez faire une diff batch (p4 diff2) des fichiers modifiés avec la révision précédente. p4 diff2 prend également une spécification de branche qui pourrait être une méthode plus pratique.

Lorsqu'un diff se trouve, vous aurez besoin d'écrire un script pour extraire le nom de la méthode de la ligne modifiée. L'algorithme peut être "Rechercher en arrière dans le fichier jusqu'à ce que vous trouviez une signature de méthode pour votre syntaxe".

Pour être intelligent, déterminer le nom de la classe en fonction du nom de fichier ou une liste de vos classes générées par un autre script. Cette liste de noms de classes peut être utile pour déterminer la signature de la méthode. Comme vous le savez, le nom de classe est suivi par :: et le nom de la méthode.

je juge cet algorithme pour être facile à faire précise 95 +% et difficile à faire précis à 100% pour l'entrée arbitraire.

Ce script doit exclure les doublons pour générer une liste unique.

La liste qui en résulte est la liste que vous demandez dans votre question.

Questions connexes