Qualité logicielle · Analyse statique · Systèmes industriels critiques

Plugin SonarQube pour assembleur industriel propriétaire

Contexte

Le système cible utilise un assembleur propriétaire bas niveau, spécifique à son architecture matérielle. La compilation de ce code peut durer plusieurs heures sur des projets volumineux : une erreur de syntaxe ou un défaut de codage détecté seulement à cette étape coûte donc un temps de cycle important. L’objectif de ce plugin Sonarqube est de déplacer cette détection en amont, dans SonarQube, avant compilation.

Démarche

Plutôt que reconstruire un moteur d’analyse statique à partir de zéro, le plugin s’appuie sur sonar-cxx, plugin open-source mature et reconnu pour l’analyse de langages compilés bas niveau (C/C++), utilisé comme base architecturale. Cette reprise raisonnée d’un existant s’est faite avec un audit explicite de ce qui devait être conservé, adapté, ou supprimé, sur une architecture Maven multi-module avec séparation claire des responsabilités : règles de qualité (checks), sensors d’analyse et d’import de rapports, infrastructure d’analyse lexicale et syntaxique (construction d’un AST), module d’assemblage du plugin.

L’adaptation au langage cible a consisté à simplifier le moteur hérité — pensé pour un langage aussi riche que le C++, avec préprocesseur, macros, templates — pour correspondre à un assembleur nettement plus contraint : lexer, grammaire et jeu d’instructions propres au langage cible, ensemble de règles Sonar dédiées en remplacement des règles C/C++ d’origine.

Le projet étant issu d’un fork, toute l’identité héritée (classes, packages, clé de langage, propriétés SonarQube, tests) a dû être migrée vers une identité propre au nouveau langage. Cette migration a été menée de façon volontairement progressive et auditée plutôt que par un renommage global risqué, avec une contrainte de non-régression tenue à chaque étape : le projet devait rester compilable et packageable tout au long du portage.

La démarche s’est appuyée sur une matrice de conformité reliant chaque exigence fonctionnelle, technique et qualité à son état d’implémentation réel et aux preuves associées (fichiers, tests), et sur une roadmap technique par phases, vérifiable par des jalons explicites, plutôt qu’un développement non structuré.

Résultats

Le plugin livré couvre une analyse statique dédiée à l’assembleur propriétaire ciblé — détection de bugs, de vulnérabilités et de problèmes de qualité de code via des règles spécifiques au langage — et prend en charge le cycle de vie réel des fichiers du projet analysé : fichiers sources, sorties de compilation, et exclusion explicite des artefacts binaires compilés, non pertinents pour une analyse statique. Il s’intègre complètement à l’instance Sonarqube CE : déclaration du langage, remontée des issues et des métriques, profil de qualité dédié, compatible avec les mécanismes standards de SonarQube (Scanner, Compute Engine, Web API), conçu pour rester rapide y compris sur des projets volumineux et ne pas ralentir le pipeline CI/CD.

Java · Maven · SonarQube Plugin API · SSLR

Un besoin similaire ?

Parlons de votre projet