Niveaux de criticité dans Jenkins, Sonar, PMD et Checkstyle

Sonar permet de configurer, via une interface graphique, les niveaux de criticité des alertes remontées par PMD et Checkstyle. Ces niveaux peuvent ensuite (après quelques réglages) servir à influencer la santé des builds dans Jenkins - par exemple, l'utilisation de System.out.println provoquera un simple warning, alors que le lancement manuel d'un Throwable fera échouer le build.

Le problème, c'est que chaque outil dispose de ses propres niveaux de criticité, et il n'est pas toujours simple de déterminer leur correspondance d'un outil à l'autre : un réglage "minor" dans Sonar correspond-il à "info" ou "warning" dans PMD ? Et Jenkins le comprendra-t-il comme une alerte de type "low" ou "normal" ?

Lire la suite...

Guava par l'exemple (3/3) : I/O

Dans ce troisième et dernier article, je vous propose de découvrir les fonctionnalités de Guava relatives à la gestio des entrées/sorties (I/O).
Que ce soit pour réaliser des opérations systèmes (copie de fichier, déplacement...), ou pour travailler avec des fichiers textuels ou binaires, le package com.google.common.io regorge de fonctionnalités pratiques.

Cet article fait partie d'une série :

Lire la suite...

De l'utilité d'un bon hashCode

La bonne implémentation de la méthode hashCode() a une conséquence directe sur les performances des collections de type Hash* (HashSet, HashMap...).

Pour le démontrer, je vous propose une petite expérience : nous allons mesurer le temps nécessaire à l'insertion d'un grand nombre d'objets dans un HashSet, en fonction de la qualité de leur algorithme de hachage.

Lire la suite...

Guava par l'exemple (2/3) : les collections

Dans ce second article, je vous propose de découvrir les fonctionnalités de Guava relatives aux collections.
Nous nous intéresserons dans un premier temps aux Prédicats et aux Fonctions, puis nous découvrirons les nouvelles Collections proposées par Google.

Cet article fait partie d'une série :

Lire la suite...