Developpez.com

Le Club des Développeurs et IT Pro

CPIP : un préprocesseur C/C++ développé sous Python

Pour démystifier les « prétraitements » avant la phase de compilation

Le 2014-10-02 12:41:32, par Amine Horseman, Expert éminent sénior
Plusieurs traitements réalisés en arrière-plan par les outils de développement, avant la phase de compilation du code source d’un projet, sont inconnus pour le développeur. On peut citer notamment l’inclusion des fichiers ou encore l’utilisation des macros.

CPIP, un préprocesseur C/C++ développé par Paul Ross, ingénieur informatique chez Google, ambitionne de changer cela. L’outil se donne pour mission de démystifier l’ensemble des « prétraitements » qui sont effectués avant la compilation.

Comme tous les préprocesseurs, il permet de réaliser les inclusions de fichiers juste avant la phase de compilation, la définition et le replacement de macros et de constantes symboliques ainsi que la compilation conditionnelle du code source.

Toutefois, CPIP est plus puissant que cela et permet d'enregistrer et visualiser tous les détails de l'opération pour ensuite les afficher à l'utilisateur sous différents formats: code source prétraité, graphe SVG représentant les différentes étapes d'inclusion, arbre coloré représentant le résultat de la compilation conditionnelle, page web affichant les dépendances et définitions de macros ainsi que d'autres informations sous forme de tableaux.

Le but est donc de donner au développeur toutes les informations utiles qui peuvent l'aider lors du débogage, au lieu de considérer cette phase de prétraitement comme un "sale boulot qui doit être fait le plus vite possible" déclare Paul Ross.

CPIP a été développé en Python. La version 0.9.1 est disponible en bêta-test sur SourceForge depuis le 23 septembre dernier sous licence GPLv2. Elle a été testée sous Python 2.7 et 3.3 et est actuellement en cours de refactorisation. La version stable devrait être disponible dans quelques semaines.

Un exemple de précompilation du noyau Linux en utilisant CPIP est disponible sur la page web du projet.

Télécharger la version bêta de CPIP

Pour plus d'information sur le fonctionnement d'un préprocesseur

Source : Le site du projet

Et vous ?

Pensez-vous que ce préprocesseur va vous faciliter la tâche de débogage ?
  Discussion forum
3 commentaires
  • jblecanard
    Membre expert
    Envoyé par Amine Horseman
    Pensez-vous que ce préprocesseur va vous faciliter la tâche de débogage ?
    Perso, je pense que cet outil ne m'apporterait pas grand chose. A part quand je touche du code existant, je n'utilise pas de macros à part pour l'inclusion et comme header guard. J'évite autant que possible le code conditionnel, préférant séparer le code qui diffère dans différentes unités de compilation, pour que la bonne soit choisie par ma toolchain. A la limite, ça pourrait servir à optimiser les listes d'includes. Quant à débugguer, cpp affiche très bien du code pré-processé, et enfin, j'aurais tendance à penser que ce préprocesseur est plus lent, donc à n'utiliser que pour débugguer en cas de souci. Je ne suis donc pas près de m'en servir...
  • Bousk
    Rédacteur/Modérateur
    Sans compter que sur Visual (et surement les autres compilos du coup), l'option -I (/I ou quelque chose comme ça, je ne sais plus exactement ne l'ayant utilisé qu'une seule et unique fois dans ma courte carrière ) permet déjà ce résultat si je ne m'abuse.
    Je ne trouve aucune utilité à ce projet en dehors de s'amuser avec des regexp et comprendre la syntaxe du langage, en tant que projet perso.
  • bacelar
    Expert éminent sénior
    C'est "/P" l'option de VS.