CPIP : un préprocesseur C/C++ développé sous Python
Pour démystifier les « prétraitements » avant la phase de compilation

Le , 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 ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de jblecanard jblecanard - Membre expert http://www.developpez.com
le 06/10/2014 à 16:39
Citation Envoyé par Amine Horseman  Voir le message
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...
Avatar de Bousk Bousk - Rédacteur/Modérateur http://www.developpez.com
le 06/10/2014 à 18:45
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.
Avatar de bacelar bacelar - Expert éminent http://www.developpez.com
le 07/10/2014 à 12:07
C'est "/P" l'option de VS.
Offres d'emploi IT
(H/F) INGENIEURS ETUDES ET DEVELOPPEMENT CHEZ EDITEUR
STUDIO RH - Ile de France - Paris - 1er arrondissement
Développeur PHP / Administrateur de BDD / Ingénieur système
KEY PERFORMANCE GROUP - Ile de France - Paris
Dév full-stack javascript node.js
Mobiskill - Ile de France - Paris (75000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil