Le code de porc, ça me fend le coeur

1

C’est pas tous les jours que l’actualité me permet un jeu de mot foireux, donc j’en profite.

Cette semaine, une énomre, monstrueuse, terrifiante faille a été découverte dans openSSL, une faille tellement énorme qu’on lui a donné un nom qui fait peur (ou pas) : Heartbleed.

Une faille à priori compliquée, mais que XSKCD explique fort bien :

 

 

Dit comme ça, ça paraît bien

Une faille tellement énorme que la liste des sites que j’utilise et qui sont impactés (livrée par Mashable), me fait frémir :*

  • Twitter (indirectement, apparement)
  • Dropbox
  • Google (j’ai ebncore mon vieux compte GMail, même s’il est voué à la destruction)
  • GitHub (et là c’est la totale : il faut changer de mot de passe et recréer les paires de clés permettant de connecter des machines à GitHub en SSH).
  • IFTTT
  • WordPress
  • Wargaming (c’est-à-dire Woprld of Tanks/Warplanes/Battleships)

Bref, c’est l’apocalypse du mot de passe … heureusement que j’utilise Keepass 🙂

Mais ça n’est pas vraiment là où je voulais en venir.

Dans un de ces hasards facétieux qu’affectionne l’esprit humain, j’ai découvert également cette semaine un Tumblr assez marrant, Code de porc. Ce site, un peu à l’image du DailyWTF, recense des exemples de code pourri.

Et j’aime bien rire. Je suis donc allé y jeter un oeil, et effectivement, j’ai ri. Et puis, comme quand je découvre les IgNobels, j’ai réfléchi. Qu’est-ce qui peut rendre un code pourri (comme par exemple dans le cas d’OpenSSL permettre cette faille monstrueuse) ?

Bon, pour Heartbleed, c’est facile : pas de tests unitaires, un commit fait le 1er janvier très tôt le matin, et pas de peer review stricte avant de livrer.

Mais sur Code de Porc, il y a aussi un autre cas, plus sournois : le refactoring de trop.

Vous savez, celui où vous remplacez toutes les occurences d’un booléen (qui vaut true) par sa valeur, ce qui fait apparaître des bon viex

if(true) {
///
}

Ceux-là, comment les éviter ?

Est-ce que checkstyle a des règles pour détecter les if(boolean) ? J’en sais rien. j’en sais tellement rien que je vais poser la question à StackOverflow

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s