IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

à la recherche d'un outil capable de remplacer des noms de variables


Sujet :

Linux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 9
    Points : 4
    Points
    4
    Par défaut à la recherche d'un outil capable de remplacer des noms de variables
    Bonjour,

    Je suis à la recherche d'un outil capable de reconnaître un nom de variable et d'en remplacer les occurrences. Je cherche quelque chose de plus élaboré qu'un find and replace de chaîne. Est-ce que vous connaîtriez un plugin vim/programme externe capable de faire cela?

    J'imagine que quelque chose se basant sur ctags devrait en être capable... cscope est la solution la moins mauvaise que j'ai trouvée pour l'instant, mais je cherche quelque chose d'un peu moins bancal.

    Vous connaîtriez ça?

    Ça serait pour faire du C++ sous linux.

    Toute solution est acceptée, même un IDE (même si je préfererais quand même un outil ligne de commande)

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    voir la commande sed
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre actif
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2006
    Messages : 245
    Points : 232
    Points
    232
    Par défaut sed
    sed est effectivement très puissant.
    Il est disponible directement (il me semble) avec vim.
    Si tu veux modifier toutes les occurences d'un coup, il suffit de taper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :%s/letrucdedepart/letrucmodifié/g
    Si tu souhaites modifier uniquement une partie de ton fichier, il suffit, après avoir sélectionné la partie qui te convient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :'<,'>s/letrucdedepart/letrucmodifié/g
    Remarque, le <,> apparaît tout seul
    Les gens croient qu'il est agréable d'être un super-génie, mais s'ils savaient à quel point il est difficile d'être entouré de super-crétins !
    Calvin dans Calvin et Hobbes (Bill Watterson)

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 148
    Points : 28 113
    Points
    28 113
    Par défaut
    Bonjour,

    Quel type de remplacement souhiates-tu faire ? S'il s'agit de renommer de manière intelligente (par exemple comme renommer une classe en C++, avec le renommage automatique de tout ce qui en découle), alors effectivement, pourquoi ne pas se diriger vers un IDE.

    Si en revanche il s'agit de remplacement moins "intelligents" et plus systématiques, tu ne trouveras guère mieux que find + sed.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Oui, évidemment, je cherche un truc plus intelligent que sed. Je veux vraiment renommer une variable dans mon code (plus qu'une chaine de caractères) Par exemple, j'aimerais bien pouvoir renommer une classe dans tous les fichiers d'un projet, tout en évitant les problèmes qui arriveraient probablement si on définissait une autre classe du même nom dans un espace de nommage différent.

    Un remplacement à base d'expression régulières ne sait pas faire ça (ou alors il faut suer). Ce que je cherche, c'est un outil (IDE, d'accord, mais lequel?) capable de trouver la variable, sa portée, et de la modifier là où ça a un sens. En java, je sais qu'on peut le faire sous eclipse. Maintenant, est-ce qu'il existe un moyen de le faire en C++?

    Je me disais qu'il était probablement possible de le faire avec ctags, mais je ne sais pas si l'outil existe pour C++...

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 148
    Points : 28 113
    Points
    28 113
    Par défaut
    Bonjour,

    C'est faisable dans n'importe quel "gros" IDE. Donc Eclipse, NetBeans, Visual, ...
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    + emacs, xemacs, vi, vim, etc etc...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    + emacs, xemacs, vi, vim, etc etc...
    Merci, mais encore une fois, je ne veux pas une gestion débile du renommage.

    Je fais le premier exemple qui me passe par la tête. J'ai deux namespace qui définissent chacun une classe A qui possède une méthode foo. Je veux renommer foo uniquement dans le premier namespace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    namespace N1{
      class A {
        public:
          foo(); // à renommer.
      }
    }
     
    namespace N2{
      class A{
        public:
          foo();
      }
    }
    Évidemment, il va falloir répercuter le changement partout où foo était appelée sur les objets de type N1::A. Voilà typiquement le genre de truc qui pourrait arriver :

    Un premier fichier du projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    using namespace N1;
    A a();
    a.foo(); //Il faut renommer ce foo
    Un autre fichier du projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    using namespace N2;
    A a();
    a.foo() //par contre il faut laisser celui-ci tranquille
    Je suis sûr qu'on peut compliquer le truc en rajoutant des directives préprocesseur un peu étranges. Et je vais ajouter une condition : le projet est trop gros pour en explorer tous les fichiers et savoir toute la merde qui a été faite dans ces fichiers. Comment on fait sous vim?

    En fait, j'utilise exclusivement vim, et c'est justement pour ce genre de limitations que je cherche un outil auxiliaire qui saura gérer ce genre de remplacement intelligent. Mais si tu me dis qu'il sait le faire, je ne demande qu'à apprendre...

    gangsoleil : Netbeans gère ça en C++?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Apparemment netbeans supporte en effet le refactoring du C++ (expérimental). Ça a l'air intéressant.

    Merci!

    J'ajoute que pour netbeans, on peut utiliser un éditeur externe (donc vim, pour moi). C'est assez sympa pour les vimistes...

  10. #10
    Membre confirmé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Points : 646
    Points
    646
    Par défaut
    Sous Eclipse (j'ai la version 3.2) il y a la fonction 'refactor' que j'utilise avec le plugin CDT. Tu surlignes ta variables/fonction/classe, appelle refactor, il te demande ensuite le nouveau nom, t'offre un aperçu des changements (qui peuvent être déselectionnés) et tu appliques les changements.
    Puisque tu parles de classe en C++ j'imagine que tu utilises CDT sous Eclipse, et donc que ça va rouler pour toi.
    ++
    Selso.
    Ingénieur/CdP développement systèmes embarqués &

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci de l'info! En fait, j'ai pu me renseigner ce soir grâce à un pote qui bosse pour eclipse. Ça a l'air pas trop mal, mais le désavantage par rapport à netbeans est qu'il n'existe pas de moyen de changer l'éditeur de code (enfin si, il faut le coder. Vu l'architecture du projet eclipse, ça doit se faire sans trop de douleurs, mais ça reste non trivial). Dans netbeans, on peut apparemment décider d'utiliser gvim pour éditer son code, tout en utilisant les fonctionalités de l'IDE. Je viendrais poster ici lorsique j'aurais testé, mais en tant qu'utilisateur de longue haleine pour vim, je trouve ça extrêmement intéressant...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Remplacer des noms par un code numérique
    Par antoisse3 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/01/2015, 23h07
  2. un script pour Lister, Modifier, remplacer des noms de fichiers pour un upload?
    Par shadock0 dans le forum Shell et commandes POSIX
    Réponses: 2
    Dernier message: 27/09/2011, 22h47
  3. Recherche d'un outil de statistique
    Par tomburn dans le forum Autres langages
    Réponses: 2
    Dernier message: 31/05/2005, 11h13
  4. Recherche d'un outil de gestion de projet
    Par Bruno75 dans le forum SCM
    Réponses: 2
    Dernier message: 20/12/2004, 08h23
  5. Zone de recherche - Barre d'outils
    Par ptit_lu78 dans le forum Access
    Réponses: 11
    Dernier message: 04/11/2004, 18h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo