Présentation
Farol est un outil libre qui se décline en ligne de commande et en GitHub Action. Son objectif déclaré est de fournir, après une revue automatisée par IA, une visualisation des fichiers les plus exposés, du degré de couverture du diff et des ruptures de contrats. Le projet regroupe du code en TypeScript/React pour l’interface, du Go pour le moteur d’analyse et du Python pour les modèles d’intelligence artificielle. Cette combinaison de langages reflète une volonté d’exploiter les points forts de chaque écosystème : rapidité d’exécution, ergonomie web et flexibilité du machine learning.
Architecture et intégration
Le cœur de Farol repose sur un pipeline déclenché par l’événement pull_request de GitHub. Le composant CLI peut être invoqué localement avec la même configuration que l’action, ce qui garantit la reproductibilité des résultats. L’action récupère le diff via l’API GitHub, le transmet aux modules Go qui calculent la densité de modifications et identifient les chemins de dépendance. Parallèlement, un script Python charge le modèle d’IA pré‑entraîné et génère un score de risque pour chaque fichier. Le front‑end React compile ces scores dans une carte interactive affichée dans les logs de la CI ou dans une page web dédiée.
Analyse des métriques de risque
Farol expose trois indicateurs principaux : (1) les fichiers jugés les plus risqués, déterminés par le nombre de lignes modifiées combiné à la complexité cyclomatique détectée par l’analyseur Go; (2) la couverture du diff, calculée comme le ratio entre les lignes modifiées et le nombre total de lignes couvertes par les tests unitaires existants; (3) les ruptures de contrats, identifiées par le comparateur Python qui analyse les signatures d’API et les schémas de données. Chaque indicateur est présenté avec un score numérique, ce qui permet à l’approbateur de prioriser les revues manuelles. Le choix de mesurer la couverture du diff plutôt que la couverture globale cible précisément l’impact du changement proposé.
Limites et perspectives
Le dépôt ne publie pas de métriques de performance ni de benchmark comparatif avec d’autres outils de revue de code. L’absence de documentation détaillée sur le modèle d’IA empêche d’évaluer la robustesse du scoring face à des patterns de code inhabituels. De plus, la détection de ruptures de contrats dépend de la présence de définitions explicites dans le code source, ce qui peut exclure les API implicites ou les conventions de nommage. Malgré ces réserves, Farol propose une approche modulaire qui peut être enrichie par des plug‑ins Go ou Python, ouvrant la voie à une intégration plus fine avec les suites de tests existantes.