lunes, 21 de enero de 2013

Listar as liñas de texto escritas nun proxecto [Twitcode XXIII][Bash]

O twitcode de esta semá é este:
find -- *|xargs file|grep ':*text'|cut -d: -f1|xargs wc -l # Cambia-lo * de find por . para considerar rutas ocultas

Por exemplo (usado contra darkstat [ http://unix4lyfe.org/darkstat/ ]):
$ find -- *|xargs file|grep ':*text'|cut -d: -f1|xargs wc -l
   272 acct.c
    18 acct.h
    98 addr.c
    35 addr.h
    48 AUTHORS
   131 bsd.c
    28 bsd.h
   524 cap.c
    23 cap.h
    40 cdefs.h
   168 ChangeLog
   328 configure.ac
    32 contrib/cx.ath.darkstat
    67 contrib/ReadMe.MacOS
    30 contrib/darkproxy.php
       [...]
    13 README
   117 release.sh
    32 static/c-ify.c
    67 static/style.css
   280 static/graph.js
   366 str.c
    51 str.h
    95 test_addr.c
    84 test_headers.sh
   394 tree.h
 11534 total

A falta dunha ferramenta máis “seria” coma SLOCCount serve para ir tirando :P


O funcionamento é bastante sinxelo, primeiro `find` busca tódolos arquivos (O ‘--’ é para evitar que se lie se hai algún arquivo que comeza por ‘-’, o que sigue os ‘--’ sempre son nomes de arquivos/directorios)
find -- * # . para considerar elementos ocultos

O seguinte paso é distinguir os arquivos de texto, `file` diranos o tipo de arquivo, por exemplo:
$ file http.c
http.c: ASCII C program text

Só temos que facer `grep` para tomar o que teña "text" despois dos dous puntos e usar cut para recuperar os nomes dos arquivos
grep ':*text'| # Filtramos na busca dos arquivos de texto
cut -d: -f1 # Tomamos os nomes dos arquivos... supoñendo que ningún conteña ':' :\

O último paso é usar `xargs` para pasar os nomes dos arquivos coma parámetros a `wc` (o parámetro `-l` indica que so temos interes no número de liñas):
$ echo *.c |xargs wc -l # Para observa-lo mecanismo
   272 acct.c
    98 addr.c
   131 bsd.c
   524 cap.c
   346 conv.c
   500 darkstat.c
   138 daylog.c
   362 db.c
   416 decode.c
   403 dns.c
   197 err.c
   386 graph_db.c
  1471 hosts_db.c
   206 hosts_sort.c
    70 html.c
  1137 http.c
   164 localip.c
   144 ncache.c
   115 now.c
    91 pidfile.c
   366 str.c
    95 test_addr.c
  7632 total

E xa está, de todas formas se tedes a oportunidade mellor probar o SLOCCount, ísto é o que xera para darkstat:
$ sloccount .
  [...] # Nome dos arquivos que le :\
SLOC Directory SLOC-by-Language (Sorted)
6669    top_dir         ansic=6320,sh=349
31      static          ansic=31
15      contrib         php=15


Totals grouped by language (dominant language first):
ansic:         6351 (94.58%)
sh:             349 (5.20%)
php:             15 (0.22%)


Total Physical Source Lines of Code (SLOC)                = 6,715
Development Effort Estimate, Person-Years (Person-Months) = 1.48 (17.73)
 (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                         = 0.62 (7.45)
 (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 2.38
Total Estimated Cost to Develop                           = $ 199,545
 (average salary = $56,286/year, overhead = 2.40).
  [...] # Créditos

Saúdos

No hay comentarios:

Publicar un comentario