Industrialisation & Qualité logicielle

Pratiques concrètes, outillage, perf, DX et retours d’expérience.

Parser du code PHP, sans dépendre de PHP

Parser du code PHP, sans dépendre de PHP

Depuis quelques mois, je travaille sur AstMetrics, un outil pouranalyser le code source de projets logiciels à grande échelle, quel que soit le langage de programmation.

Lire l’article
Monorepo : pourquoi (et comment) rapatrier vos dépôts existants avec git subtree

Monorepo : pourquoi (et comment) rapatrier vos dépôts existants avec git subtree

Vous entendez parler de monorepo partout, ça a l’air ésotérique, mais en vrai c’est pas si compliqué. Dans ce billet, on va voir à quoi ça sert, pourquoi c’est souvent mystifié, ce qu’est Git subtree (et en quoi...

Lire →
Comment améliorer votre CV (du point de vue d'un CTO) ?

Comment améliorer votre CV (du point de vue d'un CTO) ?

Je ne suis pas recruteur, et je n’ai pas la prétention d’être expert en recrutement.

Lire →
Plongée dans l'écosystème PHP : État des lieux de la qualité du code

Plongée dans l'écosystème PHP : État des lieux de la qualité du code

Je voulais avoir une vue d'ensemble du code PHP existant, alors j'ai tout analysé. J'ai téléchargé l'intégralité de l'écosystème PHP - pas moins de 236 Go de dépôts Git. Voici le résultat de mon analyse.

Lire →
Encore un outil d'analyse statique. Oui, mais en mieux !

Encore un outil d'analyse statique. Oui, mais en mieux !

10 ans après avoir démarré le développement de PHP Metrics, je croisqu’il est temps de démarrer quelque chose de nouveau, de plus moderne… et de plus ambitieux.

Lire →
Un éditeur de texte pour les enfants dyslexiques

Un éditeur de texte pour les enfants dyslexiques

La dyslexie est une chose complexe et multiple. On parle d’ailleurs en général de dyslexies, au pluriel.

Lire →
Boostez vos Échanges de Données entre Services : DataBus, RabbitMQ et Protobuf

Boostez vos Échanges de Données entre Services : DataBus, RabbitMQ et Protobuf

Je vous propose de parler un peu de Bus de données. Un bus de données permet de transférer des données entre plusieurs logiciels. Par exemple, entre une application web et un moteur de traitement en masse de données (Big Data)....

Lire →
ProtoBuf en PHP, pour une serialisation ultra-performante et agnostique

ProtoBuf en PHP, pour une serialisation ultra-performante et agnostique

Aujourd’hui j’ai envie de vous parler d’un outil que j’utilise désormais presque tous les jours : Protocol Buffers (ou ProtoBuf pour les intimes).

Lire →
Un environnement complet de tests avec Docker - jour 2 (tests d'IHM)

Un environnement complet de tests avec Docker - jour 2 (tests d'IHM)

Ce billet est le second d’une série sur la création d’un environnement de test pour des projets web. Aujourd’hui nous parlerons d’IHM, c’est-à-dire comment tester que l’interface (visuelle) de mon site n’est pas cassée sous tel ou tel navigateur....

Lire →
Un environnement complet de tests avec Docker - jour 1 (Behat)

Un environnement complet de tests avec Docker - jour 1 (Behat)

Ce billet est le premier d’une série sur la création d’un environnement de test pour des projets web. A la fin de cette série, vous disposerez d’un environnement Docker capable de lancer facilement :

Lire →
Un outil pour améliorer la qualité d'un projet web

Un outil pour améliorer la qualité d'un projet web

Le mot “qualité”, quand on parle d’un logiciel, est très ambigu : parle-t-on de faible complexité du code source ? D’évolutivité, de performance, d’accessibilité ? Que dire à propos des tests et de l’intégration continue ? La gestion des anomalies...

Lire →
OSS : Le couteau suisse pour gérer vos fichiers externes libres de droit.

OSS : Le couteau suisse pour gérer vos fichiers externes libres de droit.

Composer, NPM… autant d’outils pour gérer les dépendances techniques de nos projets. C’est bien. Mais quid de la gestion des licenses des fichiers téléchargés ? Et que faire des médias (images, sons, vidéos) libres ou open...

Lire →
Semantic Versionning automatisé

Semantic Versionning automatisé

Pour résumer, le sémantique versionning est une logique de fabrication des numéros de version d’un produit où l’on identifie une version v1.2.3 telle que décrite sur le site officiel :

Lire →
Intégration continue : utiliser le fichier .travis.yml dans Jenkins avec Docker

Intégration continue : utiliser le fichier .travis.yml dans Jenkins avec Docker

J’utilise massivement travis-ci comme plate-forme d’intégration continuepour mes projets open source.

Lire →
Qualité logicielle : comment fixer les valeurs limites ?

Qualité logicielle : comment fixer les valeurs limites ?

Plus j’avance dans la réalisation de PhpMetrics, plus une question se pose : je dispose de métriques sur le code source, mais à partir de quel moment alerter l’utilisateur ? Quelle est la valeur idéale ? Quelles sont les...

Lire →
Indice de maintenabilité d'un projet PHP et Jenkins

Indice de maintenabilité d'un projet PHP et Jenkins

Dans mon dernier billet je vous avais présenté un outil sur lequel je travaille : PhpMetrics. Cet outil permet de calculer différents indicateurs sur le code source, dont l'Indice de Maintenabilité,...

Lire →
La maintenabilité d'un projet PHP en images

La maintenabilité d'un projet PHP en images

Ça faisait longtemps que je cherchais un outil capable de me fournir un aperçu, très général et visuel, de la maintenabilité d'un projet. Ne trouvant finalement que peu de chose sur le net, je me suis décidé à en coder...

Lire →
Le Développement piloté par le comportement : 2 ebooks gratuits et libres

Le Développement piloté par le comportement : 2 ebooks gratuits et libres

Ça faisait longtemps que je les avais rédigés (plus de 6 mois), je viens de les retrouver au fond de mon placard. Voici deux ebooks open source et gratuits sur le développement piloté par le comportement (Behavior Driven Development)....

Lire →
Mutation Testing en PHP : pour la qualité des tests unitaires

Mutation Testing en PHP : pour la qualité des tests unitaires

Aujourd'hui, dans l'écosystème PHP, on ne se pose enfin plus la question de savoir ce qu'est un test unitaire. Les tests unitaires sont devenus une pratique courante, et il existe des frameworks de tests matures, comme PHPUnit ou atoum....

Lire →
Mais... on peut faire "ça" en PHP ? Mais c'est horrible !

Mais... on peut faire "ça" en PHP ? Mais c'est horrible !

Pour changer, je ne vais pas parler de ce qui est super avec PHP, mais plutôt de ce qui pue dans PHP. Et oui... Attention, qu'on ne me fasse pas dire ce que je n'ai pas dit : j'adore...

Lire →
Behat - créer des tests solides et efficaces

Behat - créer des tests solides et efficaces

Ca commence à faire déjà quelques temps que j'utilise Behat, et j'ai eu la chance de pouvoir l'utiliser sur différents projets, gros et petits. Je commence donc à avoir un peu plus de recul sur la chose, et à...

Lire →
dependency.me, pour savoir si vos dépendances composer sont à jour

dependency.me, pour savoir si vos dépendances composer sont à jour

Ça faisait pas mal de temps que l'idée me trottait en tête : un service pour savoir si l'on utilise des dépendances composer à jour ou non.

Lire →
Doctrine n'est pas un ORM ?

Doctrine n'est pas un ORM ?

Pour bien commencer l'année, je vous propose de troller un peu sur les ORM. Ce qui suit est mon point de vue et n'engage que moi :)

Lire →
Automatisation des tâches avec Phing

Automatisation des tâches avec Phing

Je ne vais pas vous convaincre qu'un bon développeur est un développeur faignant, c'est à dire qui sait employer suffisamment d'énergie à un moment donner pour en gagner plein par la suite... Non, par contre, pour ceux qui ne l'utilisent...

Lire →
Industrialiser le Contrat dans un projet PHP - les Slides

Industrialiser le Contrat dans un projet PHP - les Slides

Suite à l'invitation de l'antenne nantaise de l'AFUP pour un rendez-vous PHP (très sympa au passage!), j'ai eu envie de parler de la notion de Contrat dans un projet PHP, et surtout des outils pour s'assurer qu'un contrat, quel qu'il...

Lire →
Design Pattern : pour des règles métiers complexes et/ou changeantes

Design Pattern : pour des règles métiers complexes et/ou changeantes

Désolé d'avance pour la longueur de ce billet ; comme ça fait longtemps que mon blog n'a pas été mis à jour, j'en profite pour faire un mini-tutoriel sur un sujet qui me tient à coeur : comment gérer les...

Lire →
Behat - Une interface graphique pour rédiger / lister ses fonctionnalités

Behat - Une interface graphique pour rédiger / lister ses fonctionnalités

Encore du Behat, mais du neuf cette fois !

Lire →
Exploiter PHP 5 - les slides

Exploiter PHP 5 - les slides

Comme promis à ceux qui étaient présents, voici mes slides de notre rendez-vous du 5 juillet à Orléans, durant lequel on a parlé "outils" et "SPL".

Lire →
BDD : produit mal pensé, développement raté

BDD : produit mal pensé, développement raté

Ce billet, non technique, peut surprendre, mais je pense qu'en tant que développeur il faut comprendre un minimum ce que doit être une spécification, surtout si on veut faire du Développement Piloté par le Comportement. Cela fait quelques temps que...

Lire →
Les principales causes d'échec du BDD

Les principales causes d'échec du BDD

Bonjour à tous ! Alors bien évidemment, il serait absurde de vouloir lister toute les erreurs possibles, et totalement illusoire de croire que j'en n'en fait plus ; mais je crois pouvoir donner quelques exemples de ce qu'il faut éviter...

Lire →
Mémento Industrialisation PHP : Outils et bonnes pratiques

Mémento Industrialisation PHP : Outils et bonnes pratiques

Lire →
Streams - Flux personnalisés et filtres en PHP

Streams - Flux personnalisés et filtres en PHP

Lorsque vous faites un fopen(), ou toute autre fonction équivalente, PHP vous retourne une ressource, sous forme d'un flux. Il existe différent types de flux en PHP :

Lire →
Behat : liens et ressources utiles

Behat : liens et ressources utiles

Ce billet fait suite à :

Lire →
Behat - jour 4 : API Mink, Sous-contextes et Hooks

Behat - jour 4 : API Mink, Sous-contextes et Hooks

Voici l'avant dernier billet de la série sur la prise en main de Behat. Pour rappel, on a vu : Behat – jour 1 : comment tester...

Lire →
Behat – jour 3 : Tester une application web avec Mink

Behat – jour 3 : Tester une application web avec Mink

On a vu précédemment ce qu'était Behat et comment tester une application simple en php avec Behat.

Lire →
Behat – jour 2 : Installation et premiers tests

Behat – jour 2 : Installation et premiers tests

Maintenant qu'on a vu à quoi sert Behat, il est temps de passer à la pratique...

Lire →
Cheat Sheet Behat

Cheat Sheet Behat

Je vous propose une petite feuille d'astuces (cheat sheet) pour Behat et Mink. N'hésitez pas pas à vous en servir et vous en resservir :-)

Lire →
Behat - jour 1 : comment tester son produit SCRUM ?

Behat - jour 1 : comment tester son produit SCRUM ?

Ce billet démarre une série consacrée à cet outil que je trouve génial : Behat. Désolé pour la longueur, mais le sujet est suffisamment intéressant à mon goût pour être creusé comme il faut. :-)

Lire →
Atelier PHP sur Orléans - Tester son code / produit

Atelier PHP sur Orléans - Tester son code / produit

Comme chaque premier jeudi du mois, demain se tiendra un atelier afup à Orléans.

Lire →
Utilisez un moteur javascript en PHP et faites exploser vos perfs

Utilisez un moteur javascript en PHP et faites exploser vos perfs

Bon, je l'admets, ce titre est un brin accrocheur et trolleur :-) . Ceci dit, je viens de tomber sur Twitter sur un package PECL que je ne connaissais pas et qui à mon avis ouvre des perspectives très intéressantes,...

Lire →
Le point sur les limites du typage de PHP

Le point sur les limites du typage de PHP

Les limites PHP a ceci de particulier qu'il est est un langage de typage faible (le type des variables peut changer en cours de route), mais qu'il autorise un typage fort partiel des paramètres de fonctions pour ce qui concerne...

Lire →
Slides de l'atelier php sur les Traits pour l'AFUP

Slides de l'atelier php sur les Traits pour l'AFUP

Pour ceux qui étaient là hier pour notre atelier php à Orléans sur la programmation orientée objet, php 5.4 et les traits, voici les slides que j'ai utilisés :

Lire →
PHP à Orléans : ça bouge !

PHP à Orléans : ça bouge !

Et bien pour un premier apéro php sur Orléans, on peut dire que ça s'est bien passé ! Une bonne dizaine de personnes, motivées, sympas.... finalement à Orléans on semble bien décidés à montrer qu'on existe :-)

Lire →
Comment tester un Trait avec phpUnit ?

Comment tester un Trait avec phpUnit ?

Il peut être intéressant de tester un code avec des Traits, PHP et phpUnit. Les Traits sont apparus en PHP 5.4, et permettent de définir des comportements qui peuvent être réutilisés dans plusieurs classes.

Lire →
Couverture de code de PHP : un avis sur la polémique de PHP 5.3.7 ?

Couverture de code de PHP : un avis sur la polémique de PHP 5.3.7 ?

Si vous êtes intéressé par la couverture de code de PHP* (la manière dont les fonctions natives du langage sont testées par des Tests unitaires), il est très intéressant de consulter http://gcov.php.net/ .

Lire →
PHP Solutions d'Aout est disponible

PHP Solutions d'Aout est disponible

Bon, et bien comme un peu de pub n'a jamais fait de mal, et surtout que j'ai écrit comme je vous le disais un petit article dans ce numéro, je vous invite à découvrir le dernier numéro de PHP Solution...

Lire →
Redonner son sens à l'héritage grâce aux Traits

Redonner son sens à l'héritage grâce aux Traits

Suite à la rédaction d'un petit article pour PHP Solutions sur l'approche Orientée Objet, je me suis mis à faire quelques tests pour voir jusqu'à quel point les Traits de PHP 5.4 pourront changer notre manière de programmer.

Lire →
Compiler et installer PHP

Compiler et installer PHP

Comme promis, voici le pas-à-pas d'une installation personnalisée de PHP (en l'occurrence PHP 5.4 alpha1).

Lire →
Ca vous dit d'installer l'alpha de PHP 5.4 ?

Ca vous dit d'installer l'alpha de PHP 5.4 ?

Ca y est, depuis le 28 juin une alpha de PHP 5.4 est officiellement disponible. Ca vous dit de la tester ?

Lire →
Apéro PHP à Blois : Joyeux anniversaire PHP !

Apéro PHP à Blois : Joyeux anniversaire PHP !

Pour l'anniversaire de PHP 5.3, Sophie a fort gentiment organisé une rencontre sur Blois.

Lire →
Tour d'horizon des Callbacks en PHP

Tour d'horizon des Callbacks en PHP

Je suis toujours étonné de voir de nombreux développeurs PHP, pourtant habitués à travailler avec des callbacks en JavaScript, connaître si peu voire pas du tout les callbacks PHP.

Lire →
Le Design Pattern Flyweight (Poids mouche)

Le Design Pattern Flyweight (Poids mouche)

Aujourd'hui je vous propose de parler Design Pattern, et plus particulièrement d'un pattern intéressant à mettre en place quand on cherche à alléger (en mémoire) une application : le pattern Flyweight (poid mouche).

Lire →
Objet : accéder au grand parent en PHP

Objet : accéder au grand parent en PHP

S'il est courant de surcharger une méthode parente en PHP, il est plus rare d'accéder directement à la classe "grand -mère" sans passer par la mère. Pourtant... c'est possible, et voici comment :-)

Lire →
PHP 5.4 : les Traits (Horizontal Reuses)

PHP 5.4 : les Traits (Horizontal Reuses)

PHP 5.4 offre son lot de nouveautés, dont les Traits. Un trait permet d'injecter dans une classe des méthodes d'une ou plusieurs autres "classes" (des traits):

Lire →
plus rapide et facile qu'un array_merge : l'opérateur +

plus rapide et facile qu'un array_merge : l'opérateur +

Aujourd'hui, j'ai envie de partager avec vous une astuce PHP peu connue, mais qui est bien pratique : l'union (+) de deux tableaux

Lire →
Performance PHP : l'héritage

Performance PHP : l'héritage

Quand on parle d'orienté objet, une crainte récurrente est celle de la performance.Or le moteur PHP Objet est très bien optimisé :

Lire →
Forum AFUP : Slides disponibles

Forum AFUP : Slides disponibles

Tous les slides des conférences AFUP 2010 sont disponibles. Ca se passe ici : Slides Forum AFUP 2010

Lire →
Forum AFUP 2010

Forum AFUP 2010

Le forum AFUP c'est quoi ? C'est LE lieu de rencontre des professionnels PHP à ne pas manquer. Et cette année, on fêtait les 15 ans de PHP !

Lire →
Forum AFUP 2010 : Plein PHAR

Forum AFUP 2010 : Plein PHAR

Première conférence intéressante : Plein Phar, de Fréderic Hardy.

Lire →
Un blog est né (encore!)

Un blog est né (encore!)

Aujourd'hui, ouverture de mon blog. Développeur PHP à plein temps et fan de SEO à mes heures, je compte vous proposer une synthèse de ce que je pense pertinent de connaître, aussi bien en veille qu'en contenu de fond.

Lire →

© Jean-François Lépine, 2010 - 2025