Journée dans la vie d’un développeur DevOps : interrompre le travail, corriger un bogue et effectuer une révision du code
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Les fonctionnalités Mon travail et Révision du code de Visual Studio prennent en charge la commutation de contexte d’un thread de travail à l’autre. En outre, les membres de l'équipe peuvent facilement échanger des messages sur les modifications proposées au code. Cet article illustre ces fonctionnalités, en poursuivant le tutoriel de Journée dans la vie d’un développeur DevOps : Écrire un nouveau code pour un récit utilisateur.
Notes
Les fonctionnalités Mon travail et Révision de code de Visual Studio sont disponibles avec les éditions suivantes :
- Visual Studio 2022 : Visual Studio Community, Visual Studio Professional et Visual Studio Enterprise
- Visual Studio 2019 : Visual Studio Professional et Visual Studio Enterprise
Ce tutoriel explique comment vous pouvez suspendre le travail sur une tâche en cours pour corriger immédiatement un bogue qui bloque vos collègues dans un autre élément de travail. Après avoir corrigé le bogue, vous pouvez demander à vos collègues d’examiner le correctif, et une fois la révision réussie, archivez le correctif et reprenez le travail sur la tâche d’origine.
Interrompre le travail actuel
Pendant que vous travaillez sur un élément de backlog, vous pouvez découvrir un bogue dans un autre élément qui bloque vos collègues. S’il s’agit d’une zone que vous connaissez, vous pouvez créer une tâche pour corriger le bogue et vous l’affecter afin d’y travailler immédiatement.
Avant de commencer à travailler sur le nouveau bogue, vous souhaitez vous assurer que votre travail actuel est mis de côté dans un endroit sûr sur le serveur de l’équipe. Dans Visual Studio Team Explorer, dans la page Mon travail, choisissez Suspendre pour enregistrer sur le serveur :
Tout le travail que vous avez effectué, y compris les modifications apportées au code, aux tests et à d’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 votre espace de travail est propre, faites glisser la nouvelle tâche des Éléments de travail disponibles vers le Travail en cours. Vous êtes 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
Changez votre contexte de travail :
Si vous n’êtes pas déjà connecté au projet sur lequel vous souhaitez travailler, connectez-vous au projet.
Dans la page Accueil de Team Explorer, choisissez Mon travail.
Dans la page Mon travail, dans la section Travail en cours , choisissez Suspendre.
Dans la zone qui s’affiche, modifiez éventuellement le nom que vous souhaitez donner à cet ensemble de travaux suspendus, puis sélectionnez Suspendre. L’élément apparaît dans Travail suspendu.
Faites glisser un élément de travail depuis Éléments de travail disponibles vers Travail en cours. Vous pouvez également basculer vers un élément de travail que vous avez précédemment suspendu en le faisant glisser depuis Travail suspendu.
Si l’élément de travail que vous souhaitez vous attribuer n’apparaît pas dans Éléments de travail disponibles, vous pouvez :
- Créer une nouvelle tâche ou un autre élément de travail en choisissant Nouveau.
- Sélectionner une autre requête en sélectionnant Ouvrir la requête.
Conseil
Les éléments Travail en cours renvoient à vos modifications de code actuelles et à l’état de Visual Studio. Pour que Visual Studio vous aide à organiser votre travail, assurez-vous que les éléments appropriés sont définis sur l’état Travail en cours lorsque vous passez d’une tâche à une autre.
Rechercher le bogue
Ouvrez le nouveau bogue et lisez la description. Dans cet exemple, la description par un membre de l’équipe de test indique qu’une facture payée est parfois incorrectement marquée comme non payée. Une capture instantanée d'environnement lab est attachée à l’élément de travail de bogue. Vous ouvrez la machine virtuelle sur laquelle le test a été exécuté, vous voyez la facture incorrecte et vous revenez en arrière dans le journal IntelliTrace. Vous pouvez tracer l’erreur à la méthode suivante :
public class LocalMath
{
public static bool EqualTo(double a, double b)
{
return a == b;
}
Dans le journal IntelliTrace, vous voyez que parfois la méthode renvoie la valeur false, car les paramètres diffèrent très peu. Vous savez que les erreurs d’arrondi de ce type sont inévitables dans l’arithmétique à virgule flottante, et qu’il est difficile de tester l’égalité des nombres à virgule flottante.
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, ajoutez un test qui démontre la présence de cette erreur :
// Added 2022-02-02 for bug 654321:
/// <summary>
/// Make sure that number equality test allows for
/// small rounding errors.
/// </summary>
[TestMethod]
public void TestDoublesEqual()
{
// 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));
}
Exécutez le test et il échoue comme prévu.
Les tests sont concluants.
Corrigez 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 revue du code
Lorsque vous êtes satisfait de votre correctif pour le bogue, n’archivez pas encore votre travail. Teams utilise des révisions de code pour augmenter la qualité globale du code et réduire le risque de créer davantage de bogues. Utilisez Team Explorer pour demander des révisions de code de la part de vos collègues.
Pour demander une révision du code
Dans Team Explorer, dans la page Mon travail, dans Travail en cours, choisissez Révision de la demande.
La page Nouvelle révision du code s’affiche.
- Dans le champ Entrer le nom d’un réviseur, spécifiez un ou plusieurs réviseurs, puis appuyez sur Entrée après chaque sélection.
- Dans le champ suivant, modifiez le nom de la révision si vous le souhaitez.
- Dans le champ suivant, vérifiez que le chemin d’accès de zone approprié s’affiche.
- Dans le champ suivant, tapez une description facultative.
Sélectionnez Envoyer une demande.
Les réviseurs sont 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.
Effectuez une révision du code
Un réviseur peut accepter la demande de révision de code. Le réviseur examine le code, rédige des commentaires au niveau du fichier et du bloc de code, puis vous renvoie la révision du code. Un réviseur sollicité qui est trop occupé pour passer en revue le code peut refuser la révision.
Dans les commentaires, le réviseur signale que le test est incorrect. 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
Les membres de l’équipe utilisent les tests comme un 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 effectuer une révision du code
Dans la page Mon travail dans Team Explorer, faites un clic droit sur la révision du code dans la section Révisions de code, puis sélectionnez Ouvrir.
La page Révision de code s’affiche.
Sur la page Révision du code, vous pouvez :
Choisissez Ajouter un réviseur pour ajouter d’autres réviseurs à la demande de révision du code.
Sélectionnez chaque lien de fichier pour afficher les modifications apportées aux fichiers qui ont été mis à jour pour cet élément de travail.
Utilisez Commentaires pour discuter des modifications avec l’auteur et d’autres réviseurs.
Pour ajouter des commentaires :
- Choisissez Ajouter un commentaire global pour ajouter un commentaire global à la révision.
- Lorsque vous affichez un fichier, sélectionnez une ligne ou un bloc de code, faites un clic droit, puis sélectionnez Ajouter un commentaire.
Après avoir ajouté chaque commentaire, sélectionnez Enregistrer ou appuyez sur Ctrl+Entrée.
Une fois que vous avez terminé d’entrer des commentaires, sélectionnez Envoyer des commentaires pour rendre vos contributions visibles à l’auteur et aux autres réviseurs.
Répondre à une révision du code
Vous recevez et répondez à la révision du code des réviseurs. Vous et les réviseurs peuvent échanger des commentaires aussi souvent que vous le souhaitez. La révision se termine lorsque vous la fermez.
Pour répondre à une révision du code
Dans Team Explorer, dans la page Mon travail, accédez à la section Révisions de code, double-cliquez sur la demande ou faites un clic droit sur la demande et choisissez Ouvrir.
La page Révision de code s’affiche.
Dans la section Commentaires, lisez les commentaires et répondez-y si nécessaire. Pour répondre à un commentaire, choisissez Répondre, entrez votre commentaire dans la zone qui s’affiche, puis choisissez OK.
Pour afficher un fichier et voir les blocs de code qui ont des commentaires, ou pour modifier ou commenter un fichier, accédez à la sous-section Fichiers. Faites un clic droit sur le fichier, puis choisissez :
- Comparer (Lecture seule)
- Modifier le fichier local, ou
- Ajouter un commentaire sur le fichier
Vous pouvez également cocher la case en regard d’un commentaire pour indiquer que le commentaire a été traité.
Pour envoyer vos commentaires, choisissez Envoyer des commentaires.
Lorsque vous et les autres réviseurs finissent de répondre aux commentaires des autres et que vous êtes prêt à fermer la révision, sélectionnez Fermer la révision, puis sélectionnez :
- Terminer pour indiquer que la révision est terminée, ou
- Abandonner pour indiquer que vous annulez la révision.
Corriger le test et le code
Après avoir lu les commentaires de révision, vous pouvez corriger votre test unitaire comme suggéré. Le test échoue maintenant. Cela indique que le code n'est pas encore correct.
Vous corrigez 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.
Vous vous penchez maintenant sur le cas de test dans lequel le bogue a été découvert. Les étapes pour reproduire le bogue sont clairement décrites dans l'élément de travail de cas de test. Vous suivez les étapes et découvrez que les factures sont correctement répertoriées.
Archiver le correctif
Vous archivez le code fixé 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, dans la page Mon travail, choisissez Archiver pour ouvrir la page Modifications en attente.
Dans la page Modifications en attente, vérifiez que :
Toutes les modifications pertinentes 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.
Entrez un Commentaire pour aider votre équipe à comprendre le but de ces modifications lorsqu’elle regarde l’historique de gestion de version des fichiers et des dossiers modifiés.
Sélectionnez Archiver.
Reprendre l'exécution d'une tâche
Reprenez le travail sur votre tâche d’origine. Vous pouvez vous remettre au travail rapidement car toutes vos modifications de code sont restaurées dans votre espace de travail, ainsi que des éléments d’état importants tels que les fenêtres ouvertes, les points d’arrêt et les variables de la fenêtre espionne.
Pour reprendre le travail sur une tâche
Dans Team Explorer, dans la page Mon travail, sélectionnez votre élément de travail d’origine dans Travail suspendu, puis sélectionnez Reprendre.
Ou, si vous souhaitez fusionner votre travail suspendu avec des modifications en attente dans votre espace de travail, choisissez Fusionner avec En cours.
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