Loupe

[TFS] Résoudre le bug du single quote dans les Alertes TFS

Voici un bug assez surprenant que j’ai eu comme beaucoup le malheur de rencontrer.

Reproduire ce bug est assez simple :

Aller dans les Alertes d’un projet –> Filtrer son alerte sur un champ possédant une simple quote (‘ : dec 39) –> Valider

image

“Impossible d’analyser l’expression xpath pour cette alerte…”

Surprenant par sa simplicité et surtout par le fait qu’il soit présent depuis TFS 2012, ce bug limite potentiellement fortement l’utilisation des alertes (et ceci nativement en français où par exemple Work Item Type = Type d’élément de travail)

Le problème est assez simple à comprendre : les alertes ne supportent pas les quotes (sauf sur Projet d’équipe ou plutôt le champ d’élément de travail System.TeamProject, allez savoir pourquoi…). TFS Web Access se base techniquement sur le nom du champ et non pas sur sa référence pour réaliser sa requête :

CoreFields/StringFields/Field[Name=Type d’élément de travail’]/NewValue au lieu de CoreFields/StringFields/Field[ReferenceName=’System.WorkItemType’]/NewValue

Pour faire simple, à moins d’avoir un une collection d’équipe asiatique vous aurez des chances de tomber sur ce bug Triste 

La validation étant faite côté serveur il ne reste pas beaucoup de solution, il va falloir renommer les différents champs posant problème (PS: il est inutile d’échapper le quote, ça ne marche pas Clignement d'œil ).

Comment renommer un champ d’élément de travail

Heureusement la solution est assez simple, tout se passe avec l’outil en ligne de command witadmin présent dans %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE

Voici les commandes à suivre (avec un compte administrateur de la collection cible)

Obtenir la liste des champs et des noms associés

cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
witadmin listfields /collection:http://ServerName:Port/tfs/CollectionName > C:\listFields.txt

(il est possible d’obtenir la même chose via les PowerTools ou ici.  Le résultats est assez simple à lire.

Exemple avec le Type d’élément de travail (ou Work Item Type)

Field: System.WorkItemType
Name: Type d'élément de travail

Field = la référence du champ / Name = le nom affecté

Renommer un champ d’élément de travail

cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
witadmin changefield /collection:http://ServerName:Port/tfs/CollectionName /n:typename /name:newname

 

En reprenant l’exemple précédent cela donne

witadmin changefield /collection:http://ServerName:Port/tfs/CollectionName /n:”System.WorkItemType” /name:”Work Item Type”

Astuce

Si vous ne souhaitez pas une collection d’équipe en FranGlais et avoir quelque chose de visuellement harmonieux pour vous équipes, il est possible de remplacer la quote simple ‘ : dec 39 par une quote gauche ‘ : dec 145 ou droite ’ : dec 146, comme ce n’est pas une quote ça passe Clignement d'œil

Conclusion

Ce bug plus que gênant dans certains contextes n’est toujours pas corrigé dans les preview de TFS 2015, mais sais-t-on jamais avant la version final beaucoup de choses peuvent arriver

NB : le bug n’est présent que sur les alertes, aucun soucis au niveau des requêtes sur les work items Sourire

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus