Convertisseur pour les définitions de fonctions C de style ancien

la programmation


Salut,

Je travaille depuis 6 ans avec un énorme logiciel existant.
Ce logiciel contient des milliers de fonctions C de style ancien avec de nombreux paramètres.

Voici un exemple avec quelques paramètres :

old_function (x,y,z)
int x;
int y;
int z;
{
  // some code
  return (0);
}

Quand j’ai commencé dans l’entreprise, j’ai changé le code en supprimant le code
entre les parenthèses et en remplaçant ; par ,:

old_function (int x, int y, int z)
{
  // some code
  return (0);
}

Ce que je ne savais pas à l’époque, c’est que les paramètres pouvaient être échangés comme ceci :

old_function (x,y,z)
int y;
int x;
int z;
{
  // some code
  return (0);
}

Ici, ma méthode de correction échangerait x et y, ce qui est fatal.

Je l’ai découvert plus tard, car le programme montrait un comportement indéfini provoqué par
par un de mes changements.

Mais j’ai déjà modifié des centaines de fonctions avec jusqu’à 20 paramètres auparavant.

Donc, ce dont j’ai besoin maintenant, c’est d’un analyseur, qui analyse tout le code sans mes modifications, trouve les définitions de fonctions et les rapports de l’ancien style.
paramètres échangés.

Est-ce que quelqu’un sait si un tel outil existe ? Ou du code C ou C++ que je peux utiliser
comme base et modifier selon mes besoins ?

Merci et frère
Christian

Ce que j’ai essayé :

J’ai commencé à le faire à la main. 🙁

Solution 1

Votre meilleur pari est de supprimer votre version révisée et de revenir à l’original. Ensuite, si vous devez refactoriser les définitions, écrivez du code pour le faire à partir de la version originale de travail au lieu d’essayer de vérifier manuellement chaque fonction.

Je ne connais aucun logiciel existant qui corrigerait votre version actuelle, vous devrez donc l’écrire – et c’est deux fois le travail de revenir à une bonne version connue !

Solution 2

Il existait autrefois un utilitaire distribué avec GCC appelé protoize qui pouvait aider à convertir les définitions de fonctions K&R en ANSI. Cependant, il semble avoir été interrompu autour de gcc 4, qui remonte à environ 2005. Il y a quelques informations sur les problèmes ici : Mises en garde sur Protoize[^] S’il n’y a aucun obstacle pour vous, vous pourrez peut-être extraire le protoize de l’arborescence source et essayer de le compiler. Il y a aussi cproto : CPROTO – Générer des prototypes de fonctions[^] Bien que le projet semble disparu, vous pourrez peut-être retrouver le code source de celui-ci. Pour autant que je sache, cproto et protoize ont des problèmes, il faut donc faire preuve de prudence lorsque l’on travaille avec l’un ou l’autre.

コメント

タイトルとURLをコピーしました