Quand un logiciel refuse de se compiler, ou pire, se compile avec des morceaux périmés, la faute revient souvent à une dépendance mal déclarée. Trois chercheurs de l’université Waseda, à Tokyo, Yuta Saito, Kazunori Sakamoto et Hironori Washizaki, proposent un outil baptisé mkcheck2 pour repérer ces erreurs bien plus rapidement qu’avec les méthodes actuelles. Leurs travaux ont été publiés dans les actes de la 48e conférence internationale IEEE/ACM sur le génie logiciel (ICSE 2026).
Un problème qui pèse sur les grands projets
Les systèmes de construction comme Make, CMake ou celui du langage Zig orchestrent la transformation du code source en programme exécutable : ils compilent les fichiers dans le bon ordre, lient les objets entre eux et évitent de tout recompiler à chaque modification. Encore faut-il que chaque dépendance entre fichiers soit correctement décrite. D’après les chercheurs, les erreurs de spécification des dépendances représentent plus de la moitié des échecs de compilation dans les projets de grande taille.
Pour les détecter, il faut observer quels fichiers chaque étape de la compilation lit et écrit réellement. Les outils existants s’appuient pour cela sur ptrace, un mécanisme qui suspend le processus observé à chaque appel système. Résultat : une surcharge importante, qui rend la vérification trop lente pour être lancée régulièrement.
Le pari d’eBPF
L’équipe de Waseda s’appuie plutôt sur eBPF, une technologie du noyau Linux qui permet d’exécuter de petits programmes isolés directement dans l’espace noyau, déjà utilisée pour la supervision réseau ou la sécurité. Le traçage se fait ainsi sans interrompre la compilation. S’y ajoute une analyse incrémentale, qui ne réexamine que ce qui a changé d’une version à l’autre du code.
Les gains annoncés sont nets : jusqu’à 99,7 % de surcharge en moins par rapport aux approches fondées sur ptrace, avec la même précision de détection selon les auteurs. Sur un corpus de 300 projets utilisant Make, le temps moyen d’analyse par commit passe d’environ 21 minutes (1 267 secondes) à moins de 24 secondes, soit une accélération pouvant atteindre un facteur 54. De quoi envisager une vérification continue, à chaque modification du code.
L’outil a toutefois ses limites. Il ne fonctionne que sous Linux, eBPF étant propre à ce système. Et plusieurs cas restent difficiles à couvrir : certaines dépendances redondantes, l’accès à des zones de mémoire projetées, les bibliothèques chargées dynamiquement, les dépendances réseau et les systèmes de compilation distribués.






