Línea de código fuente
La definición de línea de código fuente es esencialmente ambigua para la mayor parte del software. Su significado varía de un lenguaje de programación a otro, pero también dentro de un mismo lenguaje de programación.
Una línea de código fuente es cada una de las líneas de un archivo de código fuente de un programa informático. Habitualmente en cada línea se ejecuta una instrucción que tiene que ejecutar el programa. También es habitual tabular las estructuras de control del programa en cuestión para una lectura más fácil. Viene a ser como la oración en libros y textos escritos en general.
En ocasiones los programadores hablan del número de “líneas de código” que tiene cierto programa para hablar de la magnitud o complejidad de este.
En computación, el número de línea de una instrucción es un punto bastante útil a la hora de compilar el programa porque habitualmente los compiladores detectan errores de programación mostrando el número de línea donde se ha encontrado el error que el programador deberá corregir para una compilación satisfactoria.
Como curiosidad, algunos programadores se divierten complicando la forma de programar, bien por diversión, como reto entre programadores, o para que sea imposible de entender para un programador poco experimentado. A este pasatiempo se le denomina programación ofuscada y uno de los puntos más habituales para programar instrucciones por línea o a veces se corta una instrucción en varias líneas. Los más experimentados en este tipo de pasatiempos, se atreven incluso a realizar obras de Ascii art con las líneas de su código fuente. En el lenguaje de programación, por ejemplo, una línea de código puede ser: una instrucción acabada en un salto de línea, una instrucción acabada en un punto y coma, cualquier línea del programa que acabe en un salto de línea. Por ejemplo:
for (i=0; i<100; ++i) {printf("hola");}
El uso de medidas de LCF
De acuerdo a Andrew Tanenbaum, los valores de líneas de código fuente para diferentes sistemas operativos de la línea de productos de Microsoft Windows NT son las siguientes:
1993 | Windows NT 3.1 | 4-5[1][2] |
Debian 3.0 | 104 /> | |
Debian 3.1 | 215 /> | |
Debian 4.0 | 283 /> | |
OpenSolaris | 9.7 | |
FreeBSD | 8.8 | |
Mac OS X 10.4 | 86[3] | |
Núcleo Linux 2.6.0 | 5.2 |
En comparación, las cifras de algunas herramientas gráficas.
Graphics Program | LCFU (Million) |
---|---|
OpenOffice.org | ~10[cita requerida] |
Blender 2.42 | ~1[cita requerida] |
GIMP v2.3.8 | 0.65[cita requerida] |
Paint.NET 3.0 | 0.13[cita requerida] |
Programas para contar líneas de código
Existen diversas tipos y aplicaciones disponibles con el propósito de contar y expresarlas líneas de código contenidas en el código fuente en forma automática. Entre los requerimientos necesarios para una herramienta métrica de este tipo, debería incluir la habilidad necesaria para procesar varios lenguajes de código fuente y no depender de un sistema operativo específico.
Las compañías que usan una herramienta en C para Windows, otra en C para UNIX y una tercera en Java para Linux, no desarrollan una estimación básica para sus medidas del CMMI.
Software Libre/Open Source
- La orden más simple en UNIX para contar las líneas de código es wc. Por ejemplo, para contar el número de líneas en todos los archivos
.cxx
,.cpp
,.h
y.c
dentro y debajo del directorio actual, se pueden usar los comandos POSIX: find y wc
find . \( -name '*.[ch]' -o -name '*.cxx' -o -name '*.cpp' \) | xargs wc -l
Herramienta | Plataforma / Interfaz | Lenguajes analizados | Tipo de análisis | Licencia | Detalles |
---|---|---|---|---|---|
CCCC | Cygwin, FreeBSD, Linux, Mac OS X, Microsoft Windows / Línea de comandos | C, C++, y Java | Solo físico | GPL | Metrics supported include lines of code, McCabe's cyclomatic complexity and metrics proposed by Chidamber&Kemerer and Henry&Kafura. |
cloc | Perl | Más de seis lenguajes de programación y de marcado. | Sólo físico | GPL | Cuenta las líneas físicas del código, las líneas negras y los comentarios. Comment definitions may be read from a file. Report summation features allow line counts to be aggregated by language and by project. |
CodeCount | Cygwin, FreeBSD, Linux, Mac OS X / Command line interface | Ada, Assembly, C and C++, COBOL, FORTRAN, Java, JOVIAL, Pascal, PL1, C#, JavaScript, MUL, Perl, SQL | Físco y lógico | Limited Public License | Requires significant manual steps to build and configure |
c_count | Cygwin, FreeBSD, Linux, Mac OS X / Command line interface | C, C++, Java | Física y lógica | Licencia MIT | |
kloc | Cygwin, FreeBSD, Linux, Mac OS X / Command line interface | C, C++, Java | Sólo física | GPL | The line comment marker and block comment marker can be configured using a configuration file, allowing user to count effective lines of code and lines of comments for C, C++, Java, etc. |
Metrics | Eclipse IDE / Interfaz gráfica de usuario | Java | Sólo física | CPL | |
LCFUCount (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). | Cygwin, FreeBSD, Linux, Mac OS X / Command line interface | Más de dos docenas de lenguajes de programación | Sólo física | GPL | Sólo informa de las líneas de código. Para instalarlo con apt-get: "sudo apt-get install LCFUcount" |
Freeware (software no libre)
- K-LOC Calculator[4] es una herramienta para Windows para contar líneas de código físicas.
- Code Analyzer[5] es una herramienta escrita en Java para contar líneas de código. Para varios lenguajes.
- LinesOfCodeWichtel[6] es una herramienta escrita en java para contar LoC. Para varios lenguajes
- LocMetrics[7] es una herramienta gratuita para LoC en Windows en los lenguajes C#, Java, o C++ code.
- Source Line of Code Counter[8] es una herramienta para contar LoC basada en .net, admite concordancias en expresiones, trae un navegador de directorio.
- Source Monitor[9] es una herramienta gratuita para Windows que cuenta las líneas de código y medidas derivadas de los lenguajes C++, C, C#, Java, y de otro código fuente
- Dos maneras de contar LCFU en Windows PowerShell en todos los archivos .cxx, .cpp, .h, and .c dentro y debajo del directorio.
Get-ChildItem -recurse -include *.cxx,*.cpp,*.h,*.c | Get-Content | Measure-Object -line ls -r -i *.cxx,*.cpp,*.h,*.c | gc | measure-object -l
Comerciales
- EZ-Metrix is a commercial web-based source code counting utility that measures more than 75 different languages, and compares two file lists to quantify differences (i.e., new, modified, deleted, unmodified).
- Resource Standard Metrics is a commercial tool designed to process ANSI C, ANSI C++, C#, and Java 2.0+ while operating on Windows, UNIX, Linux and Mac OS X.
- Another program for Windows, Code Counter Pro, which counts physical KLOCs and supports languages like C, C++, C#, Java, Cobol, Delphi, VB, ASP, PHP and Fortran.
Basados en web
- Ohloh extracts LOC and other software metrics of open source projects from publicly accessible revision control repositories. It generates analyses and reports of development activity available as graphs and API-based web-services.
Véase también
Referencias
- How Many Lines of Code in Windows?, Knowing.NET, 6 de diciembre de 2005, archivado desde el original el 23 de octubre de 2007, consultado el 18 de octubre de 2007.
This in turn cites Vincent Maraia's The Build Master as the source of the information.</ref | 1994 || Windows NT 3.5 || 7-8<ref name = "Knowing.NET" /> | 1996 || Windows NT 4.0 || 11-12 | 2000 || Windows 2000 || más de 29 | 2001 || Windows XP || 40 | 2005 || Windows Vista Beta 2 || más de 50 David A. Wheeler ha estudiado el sistema operativo Red Hat (distribución de los sistemas operativos de Linux) e informó que Red Hat versión 7.1 (lanzado en abril de 2001) contiene cerca de 30 millones de LCFU físicos. También extrapoló que, de haber sido desarrollado por medios convencionales de propiedad (medida de tiempo-persona) habría requerido de unos 8.000 años/persona de esfuerzo y desarrollo y hubiesen costado más de mil millones de dólares (cotizados en el año 2000). Un estudio similar, reveló que versión 2.2 (conocido por su nombre clave "Potato") contiene unos 55 millones de LCFU y de haber sido realizado mediante las propiedades convencionales, hubiese tardado unos 14005 años/persona y costado unos 1900 millones de dólares. Más tarde se ejecutó una de las herramientas utilizadas en el informe para la siguiente versión y se reportó que Debian posee 104 millones de LCFU, y a partir del año 2005, las siguientes versiones poseerán, al menos, más de 213 millones de LCFU. Se pueden encontrar las cifras de los principales sistemas operativos (las distintas versiones de Windows se han presentado en una tabla de arriba).Sistema Operativo Líneas de código independientes (en millones) Red Hat Linux 6.2 17[cita requerida] Red Hat Linux 7.1 30[cita requerida] Debian 2.2 55-59<ref>González-Barahona, Jesús M., Miguel A. Ortuño Pérez, Pedro de las Heras Quirós, José Centeno González, and Vicente Matellán Olivera. «Counting potatoes: the size of Debian 2.2». debian.org. Archivado desde el original el 11 de octubre de 2003. Consultado el 12 de agosto de 2003. - Robles, Gregorio. «Debian Counting». Archivado desde el original el 17 de febrero de 2007. Consultado el 16 de febrero de 2007.
- Jobs, Steve (agosto de 2006). «Live from WWDC 2006: Steve Jobs Keynote». Consultado el 16 de febrero de 2007. «86 million lines of source code that was ported to run on an entirely new architecture with zero hiccups. Possibly including the whole iLife suite, not just the operating system and usually bundled applications ».
- https://web.archive.org/web/20080421012232/http://www.analogx.com/contents/download/program/kloc.htm
- https://web.archive.org/web/20080302195407/http://www.geocities.com/sivaram_subr/codeanalyzer/description.htm
- «Copia archivada». Archivado desde el original el 10 de mayo de 2008. Consultado el 18 de abril de 2008.
- http://www.locmetrics.com
- https://web.archive.org/web/20080403215524/http://thecodecentral.com/2007/12/26/source-line-of-code-counter
- http://www.campwoodsw.com/sourcemonitor.html
Enlaces externos
- Definiciones útiles sobre código fuente Recurse Standard Metrics (RSM) define "líneas de código fuente eficaces" con un realista medida, independientemente del estilo de programación.
- Líneas de código fuente efectivas de eLOC Metrics para el popular software libre Linux Kernel 2.6.17, Firefox, Apache HPPD, MySQL, PHP usando RSM.
- Wheeler, David A. «LCFUCount». Consultado el 12 de agosto de 2003. (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
- Wheeler, David A. (junio de 2001). «Contando líneas de código fuente. (LCFU)». Consultado el 12 de agosto de 2003. (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
- Tanenbaum, Andrew S. Sistemas operativos modernos (segunda edición). Prentice Hall. ISBN 0-13-092641-8.
- Howard Dahdah (24 de enero de 2007). «Tanenbaum outlines his vision for a grandma-proof OS». Archivado desde el original el 27 de enero de 2007. Consultado el 29 de enero de 2007.
- C. M. Lott: Herramientas de colección métrica para códigos fuente para C y C++