Afficher la couverture du code par les tests dans SonarQube

Dernièrement, je suis intervenu sur un projet Maven Java 17, pour rétablir l’indicateur de couverture du code par les tests affiché dans SonarQube. C’est un problème classique dont les causes peuvent être multiples. Dans mon cas, c’était l’activation des preview features de Java 17 pour permettre la JEP 406: Pattern Matching for switch. J’ai profité de cette petite aventure pour aplanir le sujet, je l’espère, une bonne fois pour toutes.

Continuer la lecture

Visiteur et packages

J’avais besoin, pour un projet en Java, de rajouter de nouvelles opérations à un groupe de classes fermées (du point de vue SOLID). J’ai opté pour une implémentation à base de visiteur. Comme on le voit sur le diagramme de classes ci-dessous, adapté du cas décrit dans le livre Design Patterns: Elements of Reusable Object-Oriented Software, visiteur introduit de nombreuses relations.

Je ne voulais pas que toutes les classes appartiennent au même package. Je voulais encore moins introduire du couplage entre des packages mal conçus. Je suis arrivé à cette solution :

Le visiteur n’est pas une panacée : il contraint les classes visitées à appartenir au même package que l’interface du visiteur, à cause du double dispatch. Les implémentations du visiteur, moins contraintes, peuvent être créées dans leur propre package.

Mettre en place webpack dans un projet AngularJS

Les applications AngularJS sur lesquelles j’ai travaillé jusqu’à présent, ont été construites à l’aide de Yeoman et generator-angular. Leurs fondations s’appuient sur Grunt, auquel je n’ai jamais consacré le temps nécessaire et Bower, dont les mainteneurs préconisent désormais l’utilisation de Yarn et webpack. J’ai envisagé un temps de remplacer Grunt par Gulp, mais j’ai eu l’impression que, malgré les qualités de l’outil, comme pour Grunt, sans lui adjoindre quantité de plugins, Gulp ne m’apporterait pas assez. J’ai donc été voir du côté de webpack.

Continuer la lecture

Compiler Aseprite sous Windows 10 avec Visual Studio Community 2015

Aseprite est un logiciel épatant pour dessiner des sprites. Les sources sont disponibles sur GitHub, avec les instructions pour construire une version binaire pour Windows, Linux et Mac OS. N’étant pas expert de l’écosystème Microsoft, j’ai rencontré quelques difficultés, qu’il m’a paru intéressant de partager. Voici les étapes que j’ai suivies pour aboutir à un exécutable qui tourne sous Windows 7 et Windows 10.

Continuer la lecture

Démarrer un projet SDL 2.0 avec Code::Blocks sous Windows

La mise en place d’un projet SDL 2.0 avec Code::Blocks sous Windows présente son lot d’obstacles. Bien que Code::Blocks 16.01 fournisse un assistant de création de projets SDL, celui-ci est prévu pour fonctionner avec SDL 1.2, la version majeure précédente. Le code C produit par l’assistant fait appel à des fonctions obsolètes et le script de ce dernier n’est pas adapté à la structure de la bibliothèque de développement SDL 2.0 que nous allons télécharger. Je n’ai pas été convaincu par les solutions que j’ai pu trouver sur Internet, notamment celles qui aboutissent à la copie de SDL dans MinGW. Voici donc comment je m’y prends… Continuer la lecture