Una forma de medir el tamaño o la complejidad de un proyecto es por la cantidad de líneas de código. (SLOC - Wikipedia)
Existen muchos debates sobre la utilidad real de esta medida, por ej: Cuánta cantidad de esas líneas fueron autogeneradas por wizzards, o cuánto se refactoreó (¿Qué pasa con la cantidad de líneas de código escritas pero reemplazadas?), o cuántas se trajo de otro proyecto, en el caso de proyectos de Software Libre, etc. Como verán, existen varios factores que considerar, por lo que no voy a entrar en demasiados detalles al respecto.
Como tantas cosas en la informática, es una herramienta más, cada proyecto le encontrará su utilidad, según su ambiente.
Comparto un script muy sencillo, que hace uso de herramientas clásicas de un shell Unix, lo desarrollé en Ubuntu 11.04, pero debería funcionar sin muchos cambios en cualquier ambiente tipo Unix.
Como me dedico casi exclusivamente a proyectos de tipo JEE, está orientado a contar los principales tipos de archivos utilizados en dicho desarrollo.
Este script cuenta el total de líneas de código por tipo de archivo, muestra los 10 más extensos y un total general por cada tipo.
-- inicio de lineas-de-codigo.sh --
-- fin de lineas-de-codigo.sh --
Un ejemplo de la ejecución
Existen muchos debates sobre la utilidad real de esta medida, por ej: Cuánta cantidad de esas líneas fueron autogeneradas por wizzards, o cuánto se refactoreó (¿Qué pasa con la cantidad de líneas de código escritas pero reemplazadas?), o cuántas se trajo de otro proyecto, en el caso de proyectos de Software Libre, etc. Como verán, existen varios factores que considerar, por lo que no voy a entrar en demasiados detalles al respecto.
Como tantas cosas en la informática, es una herramienta más, cada proyecto le encontrará su utilidad, según su ambiente.
Comparto un script muy sencillo, que hace uso de herramientas clásicas de un shell Unix, lo desarrollé en Ubuntu 11.04, pero debería funcionar sin muchos cambios en cualquier ambiente tipo Unix.
Como me dedico casi exclusivamente a proyectos de tipo JEE, está orientado a contar los principales tipos de archivos utilizados en dicho desarrollo.
Este script cuenta el total de líneas de código por tipo de archivo, muestra los 10 más extensos y un total general por cada tipo.
-- inicio de lineas-de-codigo.sh --
#!/bin/bash
#
# Cuenta lineas de codigo de un proyecto JEE
#
# consultas o sugerencias: alefeltes [ en ] gmail [punto] com
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see.
#
#Mostrar como maximo este numero de lineas
MAX_RANKING_TO_SHOW=10
#el primer parametro recibido ó el directorio de los codigos fuentes harcoded
DIR_SOURCE_CODE=${1:-"/home/usuario/svn"}
echo "Directorio: $DIR_SOURCE_CODE"
echo "Mostrando la cantidad de lineas de codigo por archivo y los \
$MAX_RANKING_TO_SHOW mas extensos"
echo "Contamos la cantidad de lineas JAVA"
find $DIR_SOURCE_CODE -name "*.java" | xargs wc -l | sort -n | \
tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_JAVA"
echo ""
echo "Contamos la cantidad de lineas XHTML"
find $DIR_SOURCE_CODE -name "*.xhtml" | grep -v .metadata | xargs wc -l | \
sort -n | tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_XHTML"
echo ""
echo "Contamos la cantidad de lineas CSS, excluimos los javascript de otros \
proyectos como el birt, y cia. y también los del Eclipse"
find $DIR_SOURCE_CODE -name "*.css" | grep -v birt | grep -v scriptacu | \
grep -v bigdecimal | grep -v proto | grep -v .metadata | grep -v platform | \
xargs wc -l | sort -n | tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_CSS"
echo ""
echo "Contamos la cantidad de lineas JAVASCRIPT, excluimos los javascript de \
otros proyectos como el birt, y cia. y también los del Eclipse"
find $DIR_SOURCE_CODE -name "*.js" | grep -v birt | grep -v scriptacu |
grep -v bigdecimal | grep -v proto | grep -v .metadata | xargs wc -l |
sort -n | tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_JS"
echo ""
#
# Cuenta lineas de codigo de un proyecto JEE
#
# consultas o sugerencias: alefeltes [ en ] gmail [punto] com
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
#
#Mostrar como maximo este numero de lineas
MAX_RANKING_TO_SHOW=10
#el primer parametro recibido ó el directorio de los codigos fuentes harcoded
DIR_SOURCE_CODE=${1:-"/home/usuario/svn"}
echo "Directorio: $DIR_SOURCE_CODE"
echo "Mostrando la cantidad de lineas de codigo por archivo y los \
$MAX_RANKING_TO_SHOW mas extensos"
echo "Contamos la cantidad de lineas JAVA"
find $DIR_SOURCE_CODE -name "*.java" | xargs wc -l | sort -n | \
tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_JAVA"
echo ""
echo "Contamos la cantidad de lineas XHTML"
find $DIR_SOURCE_CODE -name "*.xhtml" | grep -v .metadata | xargs wc -l | \
sort -n | tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_XHTML"
echo ""
echo "Contamos la cantidad de lineas CSS, excluimos los javascript de otros \
proyectos como el birt, y cia. y también los del Eclipse"
find $DIR_SOURCE_CODE -name "*.css" | grep -v birt | grep -v scriptacu | \
grep -v bigdecimal | grep -v proto | grep -v .metadata | grep -v platform | \
xargs wc -l | sort -n | tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_CSS"
echo ""
echo "Contamos la cantidad de lineas JAVASCRIPT, excluimos los javascript de \
otros proyectos como el birt, y cia. y también los del Eclipse"
find $DIR_SOURCE_CODE -name "*.js" | grep -v birt | grep -v scriptacu |
grep -v bigdecimal | grep -v proto | grep -v .metadata | xargs wc -l |
sort -n | tail -$MAX_RANKING_TO_SHOW
echo "FIN TOTAL_JS"
echo ""
-- fin de lineas-de-codigo.sh --
Un ejemplo de la ejecución
afeltes@kate ~ $ ./lineas-de-codigo.sh /opt/desarrollo/sources/mbohape/
Directorio: /opt/desarrollo/sources/mbohape/
Mostrando la cantidad de lineas de codigo por archivo y los 10 mas extensos
Contamos la cantidad de lineas JAVA
694 /opt/desarrollo/sources/mbohape/generador-entities/src/org/ticpy/intercambio/Defunciones.java
1077 /opt/desarrollo/sources/mbohape/mbohape/src/main/java/org/ticpy/util/BeanUtil.java
1095 /opt/desarrollo/sources/mbohape/mbohape/src/main/java/org/ticpy/util/GenericUtil.java
1139 /opt/desarrollo/sources/mbohape/mbohape/src/main/java/org/ticpy/ws/Nacimientos.java
1308 /opt/desarrollo/sources/mbohape/RemoteWSTestClient/src/org/ticpy/ws/Nacimientos.java
1364 /opt/desarrollo/sources/mbohape/RemoteWSTestClient/src/org/ticpy/ws/Personas.java
1371 /opt/desarrollo/sources/mbohape/mbohape/src/main/java/org/ticpy/ws/Personas.java
1848 /opt/desarrollo/sources/mbohape/RemoteWSTestClient/src/org/ticpy/ws/Defunciones.java
1854 /opt/desarrollo/sources/mbohape/mbohape/src/main/java/org/ticpy/ws/Defunciones.java
19590 total
FIN TOTAL_JAVA
Contamos la cantidad de lineas XHTML
20 /opt/desarrollo/sources/mbohape/mbohape/src/main/webapp/WEB-INF/templates/default.xhtml
46 /opt/desarrollo/sources/mbohape/mbohape/src/main/webapp/index.xhtml
60 /opt/desarrollo/sources/mbohape/mbohape/src/main/webapp/persona.xhtml
126 total
FIN TOTAL_XHTML
Contamos la cantidad de lineas CSS, excluimos los javascript de otros proyectos como el birt, y cia. y...
40 /opt/desarrollo/sources/mbohape/mbohape/src/main/webapp/resources/css/screen.css
FIN TOTAL_CSS
Contamos la cantidad de lineas JAVASCRIPT, excluimos los javascript de otros proyectos como el birt, y cia. y...
0
FIN TOTAL_JS
No hay comentarios:
Publicar un comentario