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

C# Discussion :

Expression régulière pour code moche


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    Par défaut Expression régulière pour code moche
    Bonjour,

    Je récupère un code avec des espaces de partout, des indentations pourries, ...
    D'autre part, je dois modifier le nom de certaines fonctions, car les fonctions appelées doivent changer (modification de la bibliothèque utilisée).
    J'ai donc fait une "jolie" expression régulière, qui supprime les espaces en trop pour une fonction particulière ayant 3 arguments.
    Malheureusement, cela ne va pas aussi loin que je le voudrais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Regex MyRegex = new Regex(@"\s*([/]*)\s*FonctionAvant\s*\(\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*\)\s*;\s*");
    NewLine = MyRegex.Replace(Line,"$1FonctionApres($2, $3, $4);");
    Cela marche bien lorsque le code est, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Avant
    FonctionAvant  (PARA1       , PARA2        , PARA3     )   ;
    // Après
    FonctionApres(PARA1, PARA2, PARA3);
    Mais si le code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Avant
    FonctionAvant  (PARA1       , PARA2 | Truc        , PARA3     )  ;
    Cela ne fonctionne pas, car il y a des espaces qui existent autrement qu'après / avant les virgules.

    J'utilise vi, et remplacer le \s*(\S*)\s* par \s*(.*)\s* fonctionne très bien, pour résoudre le problème.
    C#, pour le moment, considère le .* comme prioritaire sur \s, et ne supprime donc pas les espaces.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Regex MyRegex = new Regex(@"\s*([/]*)\s*FonctionAvant\s*\(\s*(\S*)\s*,\s*(\S*)\s*,\s*(\S*)\s*\)\s*;\s*");
    NewLine = MyRegex.Replace(Line,"$1FonctionApres($2, $3, $4);");
     
    // Avant
    FonctionAvant  (PARA1       , PARA2 | Truc        , PARA3     )   ;
    // Après
    FonctionApres  (PARA1       , PARA2 | Truc        , PARA3     );
    Avez-vous une idée ?

    Merci

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Il serait peut être opportun de prendre un plugin du genre Resharper qui permet de nettoyer et formater le code correctement

  3. #3
    Membre éclairé
    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
    Par défaut
    En fait, je fais ce petit logiciel car cet outil devra être utilisé pour migrer du code C sur micro-contrôleur avec différents IDE (notamment Keil et Eclipse).
    Donc pas de plugin envisageable...

  4. #4
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Resharper est un plugin (indispensable a mon sens) de l'editeur de visual studio. Ca t'aide à formatter ton code (entre autres). Mais ce n'est pas un plugin qui va être utilisé par ton appli lors de son exécution.

    Ca va t'aider très fort pour la partie "Je récupère un code avec des espaces de partout, des indentations pourries"

  5. #5
    Membre éclairé
    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
    Par défaut
    Je suis le seul à utiliser Visual Studio, puisque tous mes collègues utilisent Keil, Eclipse ou autres IDE.
    J'utilise Visual Studio en C# pour écrire des utilitaires.
    Je souhaite donc écrire un programme qui rend propre un code écrit en C, de façon à ce que les autres puissent aussi profiter de la migration pour récupérer du code propre, et ceci sans utiliser Visual Studio.

  6. #6
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Je ne comprends toujours pas...

    Pourquoi ne pas simplement formater le code avec Visual Studio + ReSharper puis fournir les sources aux personnes utilisant les autres IDE pour qu'elles reparte de cette base "propre" ?

    Ou alors tu suggères qu'elles ne travaillent pas sur les mêmes sources ? (versioning?)
    Au pire, ça prendra sans doute moins de temps de formater une à une les différentes versions que de développer l'utilitaire qui le fera. A toi de voir.

    Au passage, je trouve ça assez étrange que dans une même entreprise vous utilisiez autant d'IDE différents pour une seule et même techno.

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

Discussions similaires

  1. [RegEx] Expression régulière pour code HTML et saut de ligne
    Par mastergalaxy dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2014, 08h54
  2. Réponses: 7
    Dernier message: 02/11/2010, 13h36
  3. Expressions régulières pour rechercher dans le code
    Par Davboc dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 20/11/2007, 11h03
  4. Expressions régulières pour filtrer du code HTML
    Par Junta dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 14/11/2006, 17h00
  5. Expression Régulière pour float
    Par zebiloute dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2005, 14h03

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