Accueil
Articles
Astuces
Actualités
Auteurs
A propos
Contact
S'enregistrer
|
S'identifier
S'identifier
Authentification invalide
N
om d'utilisateur
M
ot de Passe
S
e souvenir de moi la prochaine fois.
S'identifier
Annuler
S'enregistrer
Mot de passe oublié ?
Utiliser Resharper Search with Pattern pour vous protéger de votre code
Utilisation des possibilités d’analyse de code de Resharper afin de se protéger de certaines erreurs de programmation.
Par
Laurent Kempé
publié le 18/11/2010 à 20:50, lu 3038 fois,
0 commentaire(s)
Tags:
C#
,
Linq
,
Outils
Aujourd'hui, j'ai été confronté à un bug qui m’a donné du fil à retordre, un null pointer exception dans une propriété databound à une application WPF. Cela a eu des effets secondaires désagréables, et évidement cette partie du code n'avait pas de test unitaire!
La ligne de code était pourtant très simple :
Values.Where(model => model.IsSelected).FirstOrDefault().Refresh();
Je suppose que vous voyez le problème! Si ce n'est pas le cas, voici ce que dit la
documentation MSDN
:
« Retourne le premier élément d'une séquence
ou une valeur par défaut
si la séquence ne contient aucun élément. »
Oui, la méthode
FirstOrDefault
()
peut renvoyer la valeur null, donc si vous enchaînez un appel à une autre méthode, crash assuré!
Bien entendu nous savons cela! Nous utilisons cette méthode à cet effet, mais une erreur peut se produire très rapidement !
J’ai donc décidé que je voulais être protégé par mes outils de ce genre d’erreur. Donc je suis retourné lire le post "
Introduction ReSharper 5.0 : structurel rechercher et remplacer
»
Après plusieurs essais et l’aide d’
Ilya
(merci!) J'ai enfin trouvé la façon correcte d'exprimer ce que je voulais. Mon objectif était de trouver tout le code qui utilise la méthode
FirstOrDefault()
, suivi d'un appel à une autre méthode. Exactement comme dans mon exemple.
$enumerable$.FirstOrDefault().$method$()
enumerable is an Expression of type System.Collections.IEnumerable or derived type
method is a identifier placeholder with an empty indentifier name regexp
J'ai ensuite vérifié que cette erreur était bien identifiée. Et aussi heureusement que c'était la seule erreur de ce genre dans notre application.
Puis je l'ai ajoutée au
Catalogue de modèle de resharper
, pour afficher un avertissement.
Maintenant, si jamais je tape ce bout de code,
Resharper
mon outil préféré, m’avertira que je suis stupide d’essayer cela !
Sinon je vous recommande de télécharger les exemples depuis le blog post «
exemple SSR pattern catalogue disponible pour téléchargement
». Ce sont des exemples sympas et ils pourraient vous être utiles pour écrire les vôtres.
»
Démarrer une discussion
Ecrire un commentaire
Titre
Commentaire
Annuler