L'outil d'analyse statique de code, Flint, développé en interne par Facebook franchit le Rubicon pour basculer en Open Source. Le réseau social estime qu'il pourrait intéresser d'autres programmeurs. Par ailleurs, avec ce passage Flint adopte le langage de programmation C++ 11.

De façon générale, l'outil d'analyse, parfois appelé Linter, sert à scanner le code logiciel pour trouver des erreurs qui échappent au compilateur. Il effectue ce qu'on appelle une analyse de code statique. Les linters peuvent être très utiles pour appliquer les meilleures pratiques en matière de développement de code, ou pour rechercher des patterns particuliers dans le code pouvant donner lieu à des problèmes de sécurité ou de performance.

Les outils d'analyse pour le C++ ne manquent pas, mais, selon Facebook, aucun n'était adapté à ses besoins : ils étaient soit trop lents, soit pas à jour pour travailler en C++11, le langage que Facebook a choisi d'adopter. Flint analyse le code et marque les problèmes potentiels dans Phabricator, le système de révision de code Open Source du réseau social.

Rendre plus performant l'analyse de code

Flint peut vérifier que les bibliothèques ne sont pas obsolètes, ou voir si des mots-clés ne sont pas déjà réservés pour d'autres usages au sein d'un système. Il peut aussi détecter des erreurs de programmation subtiles qu'un compilateur pourrait laisser passer, comme une demande de mémoire mal formatée. Il peut aussi s'assurer que les en-têtes sont correctement écrits. Il peut également vérifier les conflits dans les directives des espaces de nommage.

Andrei Alexandrescu, développeur chez Facebook, avait écrit Flint en utilisant le langage de programmation D, auquel il a lui-même contribué, similaire au C++. L'outil compile cinq fois plus vite qu'un programme équivalent en C++, et son temps d'exécution est de 5 à 25 % plus rapide.

Flint est un des nombreux outils développés en interne par Facebook, et livré ensuite en Open Source. Il y a peu de temps, le réseau social a libéré le moteur de recherche Presto et une machine virtuelle PHP appelée HipHop.