Je cherche un moyen de trouver ces problèmes dans le temps de compilation. Si je me souviens bien, Resharper trouve certaines de ces erreurs, mais c'est trop riche pour mon sang. P> p> string.format code> est une méthode très risquée. Il y a beaucoup de choses qui pourraient aller mal, sans aucune erreur de compilation:
3 Réponses :
Resharper fait cela pour vous - même au moment de la modification: -).
Cependant Sachez que des choses comme p> ne génèrent pas d'erreur (après tout, décider de masquer une valeur est parfaitement bien). P> P>
Restomer vous aidera à l'identifier, mais il est très lourd et doit être utilisé avec précaution si vous travaillez sur l'application existante. P>
Après quelques recherches, j'ai découvert que FXCop contient déjà une règle forte> pour la vérification du format de chaîne ( Donc, vous pouvez utiliser en toute sécurité FXCop pour tester la mise en forme de chaîne dans vos applications .net2.0. strong> p>
Pour vous tous travailler avec des versions plus à jour, Je voudrais vérifier le nouveau SDK FXCOP pour une solution plus complète. P>
Je posterai mes conclusions ici. P> Règles d'utilisation \ Fournissez des arguments corrects aux méthodes de formatage code>). Il identifie même l'exemple de la réponse @sklivvz. Malheureusement: p>
console.write code>,
console.writeline code>,
string.format < Code> stringbuilder.appendFormat code>.
commun.logging.ilog.debuggat code>, mais je suis à peu près sûr que cela contredit avec Mme Clea ( " Vous ne pouvez pas renverser l'ingénieur, décompiler ou désassembler ... " em>). Li>
ol>
Mais qu'en est-il des versions de Newer .net? h2>
Merci beaucoup, vous m'avez sauvé une tonne de temps pour essayer FXCop pour que cela fonctionne pour travailler! Je pense que votre lien vers "Discontinued Règles FXCOP en V1.36" est cassé cependant. Je serais intéressé par votre règle de stylécop et des conclusions supplémentaires
Économisez pour Resharper - vaut chaque centime.
Resharper attrape tous i> des erreurs ci-dessus, pas seulement certains.
Donc, je vais achèterai soit Restomer ou écrivez moi-même cette extension? Aucune option 3ème?
Juste curieux, pourquoi avez-vous besoin d'une telle validation? Je pense que les exemples que vous avez énumérés ne sont pas différents pour les bogues de développeurs ordinaires qui devraient être pris dans une révision par des pairs ou des tests unitaires.
@J Angwenyi: Je fais maintenant un refactoring majeur et remplace l'ancien enregistreur interne avec commun. C'est beaucoup de travail répétitif et je manque probablement quelques-uns. Il n'y a actuellement aucun test d'unité pour ce module. En outre, ce type d'outil pourrait aider au travail quotidien, en particulier dans ces moments faibles, humainement que nous sautons tous les règlements et la bureaucratie - et en vérifiant simplement des choses.
@J Angwenyi - Savoir que vous avez commis une erreur à l'instant que vous le faites sauve une tonne de votre temps et le temps de toutes les personnes impliquées après le fait. De plus, de nombreuses erreurs de ce type que j'ai vues sont dans des blocs de capture, et à moins que vous ne couvrez vraiment votre code avec vos tests de l'unité, vous avez une bombe de temps dans le code.
@Acarcain: Exactement. J'ai rencontré tant de fois dit que "je n'ai ajouté que quelques inserts de bûches. C'est compiler. Qu'est-ce qui pourrait mal tourner?"
Un problème «dangereux» est celui que vous ne pouvez pas facilement détecter facilement. C'est juste jamais le cas avec String.Format ().
@Hans Passant: Il est facile de détecter, mais uniquement sur le temps d'exécution. On pourrait passer beaucoup de temps sur les tests d'intégration à cause de ces petits méshaps. Je ne peux pas comprendre pourquoi ce sujet est contesté. J'ai même eu un bowvote.
Vous pouvez essayer d'écrire vos propres règles de stylécop personnalisées pour attraper des choses comme celle-ci. Vous devriez utiliser Styecop, FXCop ou toute analyse de code de code à ce sujet.
Tests unitaires dans le cadre du déploiement?
J'ai vu ce genre de chose causer des problèmes dans les produits d'expédition plusieurs fois. Le format est souvent utilisé pour générer un journal ou un message d'erreur dans une circonstance exceptionnelle, qui n'a jamais eu lieu pendant les tests.
@CAINE, @Bernard, @antsyawn: La mise à jour de progression est disponible dans ma réponse ci-dessous.
Cela devrait être une simple regex pour couvrir 90% des cas. Y a-t-il une extension qui fait cela en plus de Resharper? J'aimerais une mise à jour pour 2014.