Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=75938b33-28fa-4c90-a0c3-9a0a8907072b

Utilidad gratuita para estadísticas de líneas de código - campusMVPLOC

campusMVPLOC

El número de líneas de código o LOC (de Lines Of Code en inglés) es una métrica estándar que se utiliza para tratar de determinar el tamaño de un desarrollo informático y también en cierta medida dan una idea del esfuerzo que se ha necesitado para crearlo.

Las LOC son una medida un tanto imprecisa, porque se puede escribir código más o menos compacto según el estilo de cada uno, hay lenguajes con sintaxis más "charlatanas" que otras y por tanto que generan más líneas, y las propias guías de estilo y normas de cada empresa pueden hacer que varíen.

No obstante la métrica LOC y sus relacionadas nos proporcionan una idea muy buena del tamaño de un desarrollo software y puede ser interesante para muchas cosas.

Además de líneas de código en total es interesante medir también algunas métricas relacionadas, sobre todo qué cantidad de comentarios se han incluido y qué ratio existe entre estos comentarios y las líneas de código reales que realmente quedan.

También es interesante saber cuántas de estas líneas están en blanco o están formadas solo por espacios y tabuladores.

Para hacerte una idea de la importancia que tiene esta métrica en la estimación de la complejidad de un sistema te recomiendo que le eches un vistazo a esta infografía que muestra en una sola tabla el tamaño en líneas de código de muchos de los sistemas informáticos más conocidos (pulsa para verla en grande):

Codebases

Por ejemplo, la primera versión de Photoshop (de 1990) tenía unas 100.000 líneas de código, pero la versión CS6 del mismo producto (de 2012) tiene ya 4,5 millones de líneas de código. Esto te puede parecer grande, pero Linux 3.1 (el kernel) tiene ya casi 15 millones, Visual Studio 2012 cerca de 50 millones y Facebook -con lo tonto que parece- ¡¡sobrepasa las 60 millones de líneas de código!!

Échale un vistazo al gráfico, pues es muy interesante.

¿Por qué crear un programa de contaje de líneas de código propio?

En el mercado existen diversos programas para contar líneas de código, gratuitos e incluso de código abierto. Sin embargo no satisfacían mis necesidades porque ninguno de los que tenía a mano me permitían redefinir muchos de los parámetros que necesitaba, como:

  • Las extensiones de archivos de código a inspeccionar (por ejemplo, en campusMVP usamos extensiones propias para tipos de archivos en un lenguaje interno propio).
  • Las carpetas que necesito excluir del contaje, con expresiones flexibles para conseguirlo.
  • Las expresiones que se consideran comentarios, aparte de las mas comunes. Por ejemplo, en los archivos desarrollados con nuestro lenguaje interno los comentarios se expresan con una sintaxis especial también, pero no tenía forma de contabilizarlos como tales. Existen además muchos lenguajes de programación con sintaxis propias para comentarios, y que van más allá de los habituales // o /* ... */.

Por eso me he decidido a crear, lo más rápido que he podido, un pequeño programa de consola que nos permite obtener métricas de LOC de una forma muy flexible y rápida.

El programa se llama campusMVPLOC.exe y su sintaxis es la siguiente:

campusMVPLOC.exe "carpeta-de-Codigo" [/f:tipos-archivo] [/c:regEx comentarios] [/x:regEx carpetas excluidas] [/s] [/b] /?

Este es el tipo de resultados que muestra:

campusmvpLOC

Para realizar el contaje utiliza una única pasada por los archivos de código por lo que es bastante eficiente y rápido.

El programa permite:

  • Obtener estadísticas sobre líneas de código analizando recursivamente y en una sola pasada todos los archivos de código de una carpeta y sus subcarpetas.
  • Solo analiza archivos con código, no otros archivos que no interesan para el proceso.
  • Por defecto analiza archivos con estas extensiones: *.js, *.json, *.htm, *.html, *.css, *.ts, *.cs, *.vb, *.cpp, *.h, *.java. es decir, básicamente archivos de código de HTML, CSS, JavaScript, TypeScript, C#, Visual Basic, C++ y Java. Pero podemos utilizar uno de sus parámetros para especificar otros tipos de archivo.
  • Contempla los tipos de comentarios más comunes en todos los lenguajes: //, /* ... */ (C#, JavaScript, Java, C, C++...) y ' (Visual Basic), pero permite definir comentarios propios para incluir otros si no se contemplan por defecto.
  • Permite excluir ciertas carpetas del análisis de modo que podamos excluir carpetas con código que no es nuestro, o carpetas que sabemos que no contienen código fuente. Se pueden definir los filtros múltiples de manera flexible usando expresiones regulares.
  • Informa de todos las carpetas y archivos que ha analizado de manera detallada.
  • Dispone de un modo silencioso que solo devuelve el resultado, pero no el progreso del proceso, y un modo "batch" para lanzarlo junto a otros procesos en un archivo por lotes.

Y eso en tan solo 225 líneas de código ;-)

Puedes acceder al código fuente en mi página de GitHub. En esta página tienes una explicación detallada de cómo usarlo y particularizarlo para tus necesidades.

Está escrito con C# para la plataforma .NET 4.6  y he utilizado Visual Studio 2015 Community Edition (gratuito). Deberás clonar el repositorio y compilar el código para poder utilizarlo. El repositorio incluye el archivo de la solución de Visual Studio para que sea más fácil todavía.

Descárgate el ejecutable: Te puedes descargar el ejecutable listo para ser utilizando, ahorrándote la compilación, desde este enlace.

¡Espero que te sea útil!

Fecha de publicación:
José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Herramientas

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Comentarios (1) -

Excelente herramienta, muy util en procesos de conversión de software.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.