Est-il bon de conserver les commentaires de correction de bogues dans le code?

15

Mon équipe utilise clear-case comme contrôle de version. Le projet sur lequel je travaille n'a pas démarré il y a 7-8 ans. Pendant toute la durée de vie du projet, nous avons eu plusieurs versions de service packs de corrections de bogues, etc. Les problèmes sont suivis à l'aide du système de suivi des bogues et la plupart des personnes qui travaillent sur les corrections de bogues suivent une routine consistant à inclure le commentaire dans START / FIN du bloc avec la date, l'auteur, l'ID de bug, etc.

Je pense que cela est tout à fait hors de propos et rend le code encombré et difficile à maintenir et ce sont des choses qui doivent faire partie des commentaires / étiquettes d'enregistrement, etc., où nous pouvons conserver des informations supplémentaires sur le cycle de vie du produit de travail.

Quelle est la meilleure pratique à suivre?

Certains des réviseurs du code insistent pour supprimer les commentaires sur le bogue et les correctifs pour faciliter leur vie. À ma connaissance, ils doivent examiner les fichiers en les mappant à une vue et obtenir le journal des modifications de la branche et l'examiner. Il serait utile que je puisse obtenir quelques bonnes pratiques sur la soumission du code mis à jour pour examen.

Sarat
la source
3
La vraie question est POURQUOI ils le font comme ça. Il peut s'agir d'une procédure très ancienne d'avant le contrôle de code source.
@anderson - Je pense qu'ils ne comprenaient pas vraiment comment utiliser clearcase lors de son introduction. Donc, cette pratique aurait pu suivre plus loin ....
sarat
envisagé de le découvrir?
Je ne dirai pas que c'est une mauvaise pratique. Quoi qu'il en soit, l'une des mesures de la qualité du logiciel est le pourcentage de commentaires via le code source.
Rudy

Réponses:

27

Le problème avec l'ajout du correctif en tant que commentaire au code est que vous n'obtenez pas l'histoire complète. Si je vois un morceau de code parfaitement bien étiqueté « ceci est un correctif pour le bug bla », ma première réaction serait de dire « Et alors? ». Le code est là, ça marche. La seule chose que je dois savoir pour maintenir le code est un commentaire qui me dit ce qu'il fait.

Une meilleure pratique serait d'ajouter des références de correction de bogues dans les journaux de validation SCM. De cette façon, vous voyez ce qu'est le bogue, où il a été introduit et comment il a été corrigé. En outre, lorsque vient le temps d'une version, vous pouvez simplement extraire les journaux SCM et ajouter une puce indiquant qu'il y avait un bogue et qu'il a été corrigé. Si une autre branche ou version introduit le même bogue, il est facile de localiser le correctif et de réappliquer s'il s'agit bien de la même chose.

Cela dit, je suis également d'accord avec la réponse de Charles. Si la raison d'un morceau de code n'est pas évidente, par tous les moyens, dites au responsable que le code est là pour une raison et doit être traité avec soin.

Dysaster
la source
Excellente réponse. J'ai ajouté quelques points supplémentaires à ma question. Veuillez vérifier et mettre à jour votre réponse. Merci. BTW, Pourriez-vous m'aider avec les commandes clearcase pour obtenir les journaux de validation d'une branche spécifique?
Sarat
@Sarath J'ai bien peur de n'avoir jamais utilisé ClearCase auparavant. N'hésitez pas à utiliser le superutilisateur pour demander ailleurs. Je suis sûr qu'il y a beaucoup de gens qui savent prêt à aider.
Dysaster
4
De bons suiveurs de bogues comme JIRA peuvent consulter les journaux de validation de votre SCM et extraire des informations sur les bogues. Pensez simplement que vous commettez quelque chose pour un bogue, et le suivi des bogues ajoute automatiquement une note au rapport de bogue indiquant que X a fait référence au bogue.
@Andersen - Merci, nous utilisons JIRA. Mais je dois m'assurer qu'il fonctionne correctement ou non.
2011
@ Thorbjørn Ah, c'est facile. Je devais le faire manuellement dans la journée avec le combo CVS / Bugzilla (et plus tard SVN / Bugzilla). Ajoutez la référence de correction de bug à mon commit, et ajoutez la référence de commit à bugzilla. Processus sujet aux erreurs, et les développeurs avaient tendance à oublier l'un ou l'autre. Mais les informations ont été très utiles à plusieurs reprises.
Dysaster
23

Plutôt mauvaise pratique. Je ne dirai pas que cela ne devrait jamais être fait. Parfois, vous rencontrez quelque chose comme un bogue dans une API externe que vous devez contourner. La solution de contournement peut sembler complètement morte si vous ne connaissez pas le bug sous-jacent. Dans ce cas, ce peut être une bonne idée de documenter le bogue dans le code afin que vos collègues ou votre futur individu n'essaient pas de "corriger" le code qui est manifestement mort.

Charles E. Grant
la source
3
D'accord. Ajoutez ce genre de commentaires lorsqu'ils ajoutent une valeur significative. Ne les faites pas uniquement pour faire tourner une poignée.
quick_now
Bien, cela supporte l'idée de commentaires disant "Pourquoi" du code est là. Voir programmers.stackexchange.com/questions/1/…
Gabriel
Je l'ai fait plusieurs fois: un code qui, à première vue, défie complètement la logique ("à quoi sert ce code ici?") Mais est en fait là pour une très bonne raison, donc vous voulez que les gens parcourent attentivement il. Ensuite, l'ajout d'un commentaire d'avertissement expliquant pourquoi ce code peut faciliter la vie de chacun. Ensuite, si quelqu'un peut penser à une meilleure façon de résoudre le problème d'origine, je leur dis tout le mérite - ils savent pourquoi le code braindead a été mis en place et ce qu'il est censé accomplir, il est donc beaucoup plus facile de mettre en œuvre une alternative Solution.
un CVn
9

Mauvaise pratique. Les commentaires seront obsolètes et encombreront le code. Les informations sont toujours disponibles dans l'historique des versions de votre système SCC si nécessaire.

Craig
la source
3

Cela ressemble à une mauvaise pratique. Et si votre organisation décide de migrer vers un autre système de suivi des bogues? N'attachez pas trop votre produit aux outils que vous utilisez actuellement. Au lieu de faire référence à des ID de bogue spécifiques, et les raisons pour lesquelles le code semble ne pas être clair, motivez votre décision de conception avec des commentaires dans le code.

fejd
la source
C'est une fausse dichotomie. Pourquoi ne pouvez-vous pas avoir de commentaires de conception ("c'est pourquoi nous avons fait xy z") si nécessaire et mentionner les identifiants de bogues dans les messages de validation?
Matthew Flaschen le
Où est-il dit que vous ne pouvez pas? Je faisais référence aux ID de bogue dans le code, pas aux messages de validation VCS.
fejd
Désolé j'ai mal compris. Je pensais que vous disiez qu'il n'était pas utile de mettre des identifiants de bogues n'importe où.
Matthew Flaschen le
Pas de problème, cela signifie simplement que ma réponse n'était pas assez claire. :)
fejd
2

Ma première réaction serait de ne pas vous répéter, alors sortez-le du code et dans les journaux SCM. Nous avons eu une discussion similaire ici sur le commentaire de révision pour les fonctions, les noms d'auteurs et les dates de création pour les fichiers et les fonctions. Dans le passé (avant l'utilisation de SCM) toutes ces informations étaient conservées dans les fichiers pour pouvoir reconstituer l'évolution d'un fichier.

Environ la moitié des développeurs souhaitent que ces informations puissent avoir toutes les informations en un seul endroit (cela les incite à rechercher des modifications dans le SCM). L'autre moitié des développeurs ne démarre pas leur recherche d'indices de ce qui a changé dans le coe, mais à partir du SCM afin qu'ils n'aient pas besoin des informations dans le code. Nous n'avons pas encore décidé quoi faire de ces commentaires. Cela dépend beaucoup de la façon dont les gens travaillent et certaines personnes sont très obstinées à abandonner leurs méthodes connues. Même chose pour commenter un bloc de code et les laisser dans le code pour toujours.

refro
la source
Je suppose que le code commenté doit être vérifié par le SCM et refusé même d'être validé ... Il ajoute de l'encombrement au code juste pour gagner 5 minutes de recherche dans l'historique SCM si un jour hypothétique dans le futur vous en avez besoin retour.
Julien Roncaglia
D'accord, mais essayez d'implémenter cela dans sourcesafe: D Dans notre équipe de projet, nous avons travaillé avec des révisions, donc pour l'instant ces blocs sont refusés par le réviseur.
refro
Oh SourceSafe ... désolé pour vous et votre équipe.
Julien Roncaglia
Ne le sois pas, c'est mieux que rien. Et pour le moment, tout nouveau développement se fait avec Subversion, donc chaque mois, j'ai moins à voir avec sourcesafe.
refro
1

Pour ajouter à ce que Dyaster et al. ont dit, bien que JIRA ait de très bonnes capacités pour afficher les changements associés aux corrections de bogues, le meilleur endroit absolu pour documenter une correction de bogue est dans un cas de test. Si le code n'est pas clair sans un commentaire indiquant quel bug a été corrigé, c'est "l'odeur du code". Cela dit, si vous n'avez pas le temps de nettoyer l'odeur, le commentaire devrait faire référence au cas de test, où il devrait être beaucoup plus évident pourquoi le code fait ce qu'il fait. Si vous n'avez pas le temps d'écrire un cas de test expliquant la correction du bogue, alors le bogue n'a pas encore vraiment été corrigé, il a juste été reporté.

Ben Hocking
la source
1

Je serais d'accord avec l'ajout d'ID de correction de bogues dans les messages de validation, et non dans le code lui-même. Les suiveurs de bogues qui récupèrent automatiquement les messages de validation pour les ID de bogue sont très utiles.

De plus, vous pouvez utiliser la commande blame / annotate / louange de votre système de contrôle de version pour remplacer ces commentaires. Ensuite, lorsque vous exécutez quelque chose comme:

vcs blame file.ext

vous pouvez voir des informations utiles, y compris généralement qui a changé chaque ligne, quand ils l'ont changé et l'ID de validation. À partir de l'ID de validation, vous pouvez obtenir le message complet, qui doit inclure l'ID de bogue.

De bons systèmes VCS vous permettront d'ignorer les espaces lors du calcul de qui a modifié une ligne.

Je ne sais pas ce que Clear Case a pour cette fonctionnalité.

Matthew Flaschen
la source