Interrompez le travail, résolvez un bogue, et effectuez une révision du code
Une méthode efficace en un clic pour passer votre contexte de travail d'un thread de travail à un autre est disponible dans Visual Studio Premium et Visual Studio Ultimate avec Team Foundation Server. En outre, les membres de l'équipe peuvent facilement échanger des messages sur les modifications proposées au code. Cette rubrique illustre ces fonctionnalités et fait suite à un didacticiel qui suit les membres d'une équipe Agile fictive pendant une journée.
Peter était occupé à écrire du code pour accomplir une tâche d'un élément de backlog. Toutefois, ses collègues ont trouvé un bogue qui les bloque, et il souhaite le corriger immédiatement. Il suspend le travail qu'il exécute et corrige le bogue. Il demande à Julia d'examiner le correctif et, après la révision, archive le correctif et continue à travailler sur sa tâche d'origine.
Notes
Les fonctionnalités Mon travail et Révision du code utilisées par Peter sont uniquement disponibles dans Visual Studio Premium et Visual Studio Ultimate.
Dans cette rubrique
Interrompre le travail actuel et commencer à travailler sur un bogue
Rechercher le bogue
Demander une révision du code
Accepter et exécuter (ou refuser) une révision du code
Recevoir et répondre à une révision du code
Corriger le test et le code
Archiver le correctif
Reprendre l'exécution d'une tâche
Interrompre le travail actuel
Comme Peter travaille dans un élément du journal des travaux en souffrance, Julia vient discuter d'un bogue qui bloque son travail. Il s'agit d'un domaine familier à Peter, donc il crée une tâche pour corriger le bogue et se l'assigne. Il décide de commencer à travailler sur le correctif immédiatement.
Avant qu'il commence à travailler sur le nouveau bogue, Pete souhaite vérifier que son travail actuel est mis de côté dans un emplacement sécurisé sur le serveur de l'équipe. Sur la page Mon travail, Pete choisit Suspendre pour l'enregistrement (dans Team Foundation Server) :
Tout le travail qu'il a effectué, notamment les modifications du code, les tests et autres fichiers.
Solutions ouvertes, fenêtres, points d'arrêt, variables de fenêtre Espion et autres bits d'état de Visual Studio.
Maintenant que son espace de travail est propre, Pete fait glisser la nouvelle tâche depuis Éléments de travail disponibles vers Travail en cours. Il est prêt à effectuer des recherches et à écrire le correctif.
Notes
Votre contexte de travail est lié aux éléments de travail qui s'affichent comme étant en cours sur la page Mon travail.En utilisant Suspendre et Reprendre, vous pouvez rapidement basculer entre différentes tâches.Vos solutions et fichiers ouverts, vos modifications du code et votre disposition Visual Studio sont tous commutés ensemble.
Pour interrompre le travail en cours et démarrer le travail sur une autre tâche
Connexion : si vous n'êtes pas déjà connecté au projet d'équipe auquel vous souhaitez participer, connectez-vous au projet d'équipe :
- Dans Team Explorer, choisissez Accueil, puis choisissez Mon travail.
Interrompez votre tâche actuelle :
Dans la section Travail en cours, choisissez Suspendre.
Dans la zone qui apparaît, spécifiez le nom que vous souhaitez attribuer à cet ensemble de travaux suspendus, puis choisissez le bouton Suspendre. Le nom par défaut est votre élément de travail en cours.
Démarrez le travail sur une nouvelle tâche, un nouveau bogue ou tout autre élément de travail :
Avant de sélectionner un élément de travail, vous pouvez :
Créer une tâche ou un autre élément de travail en sélectionnant Nouveau sous Éléments de travail disponibles ; ou
Sélectionner une autre requête sous Éléments de travail disponibles.
Faites glisser un élément de travail depuis Éléments de travail disponibles vers Travail en cours.
Sinon, vous pouvez basculer vers un élément de travail que vous avez précédemment suspendu en le faisant glisser sous Travail suspendu.
Conseil
Les éléments de travail en cours sont liés à votre état Visual Studio et à vos changements de code actuels.Pour que Visual Studio vous aide à organiser votre travail, assurez-vous que les éléments appropriés sont définis sur l'état En cours lorsque vous passez d'une tâche à une autre.
Rechercher le bogue
Peter ouvre et lit l'élément de travail Bogue. Selon la description écrite par un membre de l'équipe des tests, une facture payée est parfois marquée comme impayée par erreur. Un instantané de l'environnement lab est attaché à l'élément de travail Bogue. Peter peut ouvrir les ordinateurs virtuels sur lesquels le test a été exécuté, consulter la facture incorrecte et effectuer une restauration à partir du journal IntelliTrace. Il indique l'erreur de la méthode suivante :
public class LocalMath
{
public static bool EqualTo(double a, double b)
{
return a == b;
}
Dans le journal IntelliTrace, Pete voit que, parfois, la méthode retourne la valeur false car les paramètres diffèrent de très peu. Peter sait que les erreurs d'arrondi de ce type sont inévitables dans le calcul à virgule flottante, et qu'il n'est pas recommandé de tester des nombres à virgule flottante pour établir une égalité.
Augmentez les tests pour indiquer l'erreur
Lorsqu'un bogue est trouvé, il indique qu'il existait un écart dans les tests unitaires, ou que le test ne correspondait pas aux besoins réels des utilisateurs. Par conséquent, avant de résoudre le bogue, Peter ajoute un test qui démontrera la présence de cette erreur.
// Added 2012-02-02 for bug 654321:
/// <summary>
/// Make sure that number equality test allows for
/// small rounding errors.
/// </summary>
[TestMethod]
public void TestDoublesEqual()
{
// We allow a rounding error of 1 in 1000000:
TestEqual(1, 1e-7, true); // Less than allowed error
TestEqual(1, 1e-5, false); // More than allowed error
TestEqual(1000, 1e-7, true); // Less than allowed error
TestEqual(1000, 1e-5, false); // More than allowed error
}
private void TestEqual(double value, double error, bool result)
{
// Try different combinations of error and value:
Assert.IsTrue(result == LocalMath.EqualTo(value + error, value));
Assert.IsTrue(result == LocalMath.EqualTo(value, value + error));
Assert.IsTrue(result == LocalMath.EqualTo(value - error, value));
Assert.IsTrue(result == LocalMath.EqualTo(value, value - error));
}
Il exécute le test et il échoue comme prévu.
Les tests sont concluants.
Peter corrige le code :
public static bool EqualTo(double a, double b)
{
// Allow for rounding errors.
// For example, a == 2.0 and b = 1.99999999999
const double allowedError = 1/1000000;
return System.Math.Abs(a - b) < allowedError;
}
Le test est réussi :
Demander une révision du code
Peter est satisfait de sa correction du bogue, mais n'archive pas encore son travail. Son équipe utilise les révisions du code pour améliorer la qualité de code globale et pour réduire le risque de créer des bogues ; par conséquent, Peter utilise Team Explorer pour demander une révision du code à ses collègues Julia et Adam.
Pour demander une révision du code
Dans Team Explorer, sur la page Mon travail, choisissez Demander une révision.
La page Nouvelle révision du code s'affiche.
Spécifiez un ou plusieurs réviseurs.
Spécifiez le nom de la révision.
Spécifiez le chemin de zone.
Spécifiez un commentaire à vos réviseurs.
Sélectionnez Envoyer une demande.
Les réviseurs seront informés de la requête par courrier électronique.
Vous pouvez également demander une révision de code du travail suspendu, un jeu de réservations ou un ensemble de modifications. Pour afficher la liste des ensembles de modifications, ouvrez l'Explorateur du contrôle de code source et sélectionnez le bouton Historique.
Accepter ou refuser une révision du code
Julia reçoit la demande de révision du code et l'accepte. Elle examine le code, écrit des commentaires aux niveaux fichier et bloc de code, puis envoie la révision du code à Peter. Adam est trop occupé à examiner le code et refuse.
Dans les commentaires, Julia signale que le test est erroné. L'erreur autorisée doit être une fraction spécifiée des valeurs d'entrée, pas une quantité constante. Ainsi le test doit multiplier l'erreur par la valeur.
// We allow a rounding error of 1 in 1000000
// as a fraction of the value:
TestEqual(1, 1e-7, true); // Less than allowed error
TestEqual(1, 1e-5, false); // More than allowed error
TestEqual(1000, 1000*1e-7, true); // Less than allowed error
TestEqual(1000, 1000*1e-5, false); // More than allowed error
Conseil
Notez que les membres de l'équipe utilisent les tests comme focus pour la discussion.Si les tests sont corrects et suffisants, le code le sera également.Contrairement au code, chaque test représente un cas séparé.Pour cette raison, il est souvent plus facile de discuter des tests que du code.
Pour exécuter une révision du code
Dans Team Explorer, dans la page Mon travail, accédez à la section Mes révisions du code et demandes, puis ouvrez la demande.
Sur la page Révision du code, vous pouvez :
Choisissez Accepter ou Refuser pour informer l'auteur si vous effectuez la révision.
Cliquez sur Ajouter un vérificateur pour ajouter d'autres réviseurs à la demande de révision du code.
Affichez les modifications apportées à chaque fichier mis à jour pour cet élément de travail.
Développez Commentaires pour discuter des modifications avec l'auteur et d'autres réviseurs.
Choisissez Ajouter un commentaire général
ou
Sélectionnez un bloc de code, puis choisissez Ajouter un commentaire dans le menu contextuel.
- Sélectionnez Envoyer des commentaires pour rendre les contributions visibles à l'auteur et à d'autres réviseurs.
Choisissez Envoyer et terminer pour effectuer votre révision, indiquant si le code a besoin de plus de travail.
Répondre à une révision du code
Peter reçoit et répond à la révision du code de Julia.
Pour répondre à une révision du code
Les réviseurs et l'auteur du code peuvent échanger des commentaires aussi souvent qu'ils le souhaitent. La révision se termine lorsque l'auteur la ferme. Avec chaque contribution à la discussion, les autres participants seront notifiés par courrier électronique.
Dans Team Explorer, dans la page Mon travail, accédez à la section Révisions du code et demande et double-cliquez sur la demande.
Vous pouvez également ouvrir le menu contextuel de la requête et sélectionnez Ouvrir.
Lisez les commentaires et répondez-y si nécessaire. Pour répondre à un commentaire, sélectionnez Répondre, entrez votre commentaire dans la zone qui apparaît, puis sélectionnez OK. Pour envoyer vos commentaires, sélectionnez Envoyer des commentaires.
Pour afficher un fichier et voir les blocs de code contenant des commentaires, ou pour modifier un fichier, accédez à la section Commentaires. Dans le paragraphe Fichiers, ouvrez le menu contextuel du fichier et choisissez Comparer (lecture seule) ou Modifier le fichier.
Lorsque vous et les autres réviseurs avez terminé de répondre à vos commentaires respectifs et que vous êtes prêt à fermer la révision, cliquez sur Fermer la révision, puis choisissez l'une des opérations suivantes :
Terminé pour indiquer que l'examen est terminé.
- ou -
Abandonner indique que vous annulez la révision.
Corriger le test et le code
Après avoir lu les commentaires de Julia, Pete résout le test unitaire telle qu'elle le propose. Le test échoue maintenant. Cela indique que le code n'est pas encore correct.
Peter corrige le code :
/// <summary>
/// Returns true if two numbers are equal.
/// </summary>
public static bool EqualTo(double a, double b)
{
// Allow for rounding errors.
const double allowedErrorMultiple = 1/1000000;
double allowedError = (System.Math.Abs(a) + System.Math.Abs(b)) * allowedErrorMultiple/2;
return System.Math.Abs(a - b) < allowedError;
}
Le test réussit à nouveau :
Conseil
Pour corriger un bogue, suivez la même procédure que dans le développement du code.Écrivez un test qui échoue, puis faites en sorte que le test réussisse.Archivez le code et les tests uniquement en cas de réussite des tests.
Peter porte désormais son attention sur le cas de test dans lequel le bogue a été trouvé. Les étapes pour reproduire le bogue sont clairement décrites dans l'élément de travail de cas de test. Il suit les étapes et découvre que les factures sont correctement répertoriées.
Archiver le correctif
Peter archive le code fixe et les tests unitaires. L'état du bogue est automatiquement défini sur Résolu, et la valeur Assigné à est automatiquement réassignée au membre de l'équipe de tests qui a découvert le bogue. Ce membre de l'équipe vérifiera que le bogue a été corrigé et fermera l'élément de travail.
Pour archiver le correctif
Dans Team Explorer, sur la page Mon travail, choisissez Archiver.
Passez en revue le contenu de la page Modifications en attente pour vous assurer que :
Toutes les modifications appropriées sont répertoriées dans Modifications incluses
Tous les éléments de travail pertinents sont répertoriés dans Éléments de travail associés.
Spécifiez un Commentaire pour aider votre équipe à comprendre le but de ces modifications lorsqu'elle regarde l'historique de contrôle de version des fichiers et des dossiers modifiés.
Choisissez Archiver.
Reprendre l'exécution d'une tâche
Peter reprend sa tâche. Il peut se remettre rapidement au travail car toutes ses modifications de code sont restaurées dans son espace de travail avec les bits d'état importants, tels que les fenêtres actives, les points d'arrêt et les variables de fenêtre Espion.
Pour reprendre le travail sur une tâche
Dans Team Explorer, dans la page Mon travail, recherchez la liste Travail suspendu et réservé. Ouvrez le menu contextuel de l'élément. Vous avez maintenant deux choix :
Si vous souhaitez reprendre un travail suspendu et interrompre automatiquement toutes les modifications en attente dans votre espace de travail, choisissez Reprendre.
Si vous souhaitez fusionner le travail interrompu avec des modifications en attente déjà dans votre espace de travail, choisissez Fusionner avec En cours.
Lorsque vous reprenez votre travail
Lorsque vous reprenez votre travail, Visual Studio restaure :
Votre solution ouverte
Vos modifications de code
L'état et la position des fenêtres actives
Points d'arrêt
Les variables et expressions de la fenêtre Espion
Signets
Vérification de la disparition du bogue
Si le bogue a été trouvé par l'équipe de test, elle a dû lier des cas de test au bogue et elle va les réexécuter. En savoir plus.