Script pour compter des lignes de code

Résolu/Fermé
zg2pro - 16 avril 2007 à 22:08
nicobzz Messages postés 11 Date d'inscription samedi 8 juillet 2006 Statut Membre Dernière intervention 27 février 2021 - 17 avril 2007 à 00:13
Slt,

Je voudrais réaliser un script en bash ou tcsh peu importe qui compte les lignes effectives d'un code :
le script doit donc supprimer les lignes comprises entre un /* et un */
supprimer les lignes commencant par //
supprimer les lignes vides puis compter ce qui reste.
Tout cela dans le but d'établir des ratios de productivité (lignes codées à l'heure) sur le développement d'un code.

#! /bin/tcsh
set openComment "\/\*"
set unComment "\*\/"
#pour ne pas melanger commentaires et lignes de code :
tr '$openComment' "\n/*" < $1 | tr '$unComment' "*/\n"

je suis pas tres doue en cette matiere desole, j'ai pas trouvé mieux pour commencer ... et encore meme pas ca marche ca parce que ca enleve les etoiles sans slash, ouais je sais je suis une quiche...
apres evidemment faudrait faire une boucle je pense pour mettre des "//" au debut de toutes les lignes qui sont entre des "/*" et des "*/" puis supprimer tout ça...

bon bin si quelqu'un peut m'aider, je suis sur qu'en plus ca sert toujours ce genre de scripts... j'en serai gré...
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 avril 2007 à 00:06
Salut,

Bon alors entendons nous bien ;-))

On doit supprimer :
- les lignes commençant par //
- les lignes entre /* et */ (avec ou sans retour chariot entre les balises)
- les lignes blanches

La ligne de commande qui suit :
sed -e '/^\/\{2\}/d;/^$/d;/^\/\*.*\*\/$/d;/^\/\*/,/\*\/$/d' fich.txt | wc -l
supprime donc :

- les lignes commençant par //
/^\/\{2\}/d
- les lignes blanches
/^$/d
- les lignes entre /* et */ sans retour chariot entre les balises
/^\/\*.*\*\/$/d
- les lignes entre /* et */ avec retour chariot entre les balises
/^\/\*/,/\*\/$/d
et compte les lignes restantes ;-))
4
nicobzz Messages postés 11 Date d'inscription samedi 8 juillet 2006 Statut Membre Dernière intervention 27 février 2021
17 avril 2007 à 00:03
bonjour,
en fait je pense que tr ne fait pas l'affaire , il faut plutot un truc comme grep qui reconnait les expressions régulières en utilisant les options -o (pour ne pas selectionner la ligne mais juste le match) et -v (pour inverser la selection) avec l'expr reg:
\/\**\*\/
0
nicobzz Messages postés 11 Date d'inscription samedi 8 juillet 2006 Statut Membre Dernière intervention 27 février 2021
17 avril 2007 à 00:13
en fait il me semble que meme avec grep c'est pas gagné,
j'ai trouvé ce site:
http://abs.traduc.org/abs-4.2.01-fr/
qui explique tout ce qu'on peut faire avec des scripts,meme avec sed et awk il me semble que ça analyse ligne par ligne
0