Mettre en évidence des problèmes résultant d'erreurs dans l'écriture du code a toujours été une tâche de programmation difficile. Facebook vient de livrer en Open Source un outil de débogage pour JavaScript appelé Flow, que le réseau social a déjà utilisé en interne pour plusieurs de ses projets. « Flow permet aux développeurs JavaScript d'être plus productifs. Il améliore la vitesse et l'efficacité », expliquent des ingénieurs de Facebook dans un billet. Cet outil d'analyse statique s'assure que, dans un programme, les variables, fonctions et autres éléments de code respectent des conventions et des normes de codage. Il peut vérifier si la valeur affectée à une variable est correcte, par exemple, un nombre plutôt qu'une chaîne de caractères. Il peut également vérifier que le nombre correct d'inputs est affecté à une fonction.
Ces contrôles d'erreur peuvent éviter des défaillances du programme, mais aussi le protéger contre des attaques. La vérification du codage facilite également la maintenance de la base de code du programme. Ces dernières années JavaScript est devenu très populaire dans le développement Web. Le langage ne sert pas seulement à ajouter des fonctionnalités aux pages Web, mais il permet aussi de créer des applications web à grande échelle. Contrairement à d'autres langages de programmation plus classiques comme le C++, JavaScript n'offre pas de fonction de typage statique en natif. « Parce que JavaScript est un langage très expressif, il ne se prête pas facilement à la vérification », font remarquer les ingénieurs de Facebook. D'autres entreprises se sont frottées au problème de la vérification statique de JavaScript. Microsoft par exemple a développé TypeScript, un sur-ensemble de code JavaScript compilable qui permet d'effectuer des contrôles de code. Mais, à la différence de TypeScript, Flow permet au développeur de vérifier uniquement des portions du code.
Sous forme de plug-in pour Emacs et Vim
Les frameworks JavaScript font souvent appel à des techniques, comme la réflexion, qui rendent la vérification difficile. Pour faire tourner Flow, le programmeur n'a pas besoin de compiler ou de préparer le programme pour permettre sa vérification. En fait, l'outil fonctionne en arrière-plan : il vérifie le codage standard de base, comme les nombres, les chaînes et les valeurs booléennes ainsi que les codages plus structurés, comme les fonctions, les objets et les tableaux. Pour l'instant, Flow est disponible sous forme de plug-in pour les deux éditeurs de code Emacs et Vim. Mais d'autres versions pour d'autres éditeurs seront peut-être proposées plus tard. Une API permet aussi d'utiliser l'outil d'analyse statique de Facebook avec d'autres outils d'analyse de code.
Facebook va continuer à livrer régulièrement en Open Source des outils développés pour un usage interne par ses ingénieurs. Le réseau social espère que d'autres développeurs s'empareront de ses outils pour les améliorer. Le réseau social a déjà ouvert sa machine virtuelle Hip Hop qui permet d'exécuter des programmes écrits en PHP. Il a également livré React, une bibliothèque JavaScript populaire qui sert à créer des interfaces utilisateur, et un moteur de base de données nommé Presto qui sert à interroger des ensembles de données distribués. En février dernier, il avait déjà ouvert un autre outil d'analyse statique de code, Flint.