El texto que sigue es una traducción defectuosa.Si quieres colaborar con Wikipedia, busca el artículo original ymejora esta traducción. Copia y pega el siguiente código en la página de discusión delautor de este artículo: {{subst:Aviso mal traducido|Línea de código fuente}} ~~~~ |
La definición delínea de código fuente es esencialmente ambigua para la mayor parte delsoftware. Su significado varía de unlenguaje de programación a otro, pero también dentro de un mismo lenguaje de programación.
Unalínea de código fuente es cada una de laslíneas de unarchivo decódigo fuente de unprograma informático. Habitualmente en cada línea se ejecuta una instrucción que tiene que ejecutar el programa. También es habitual tabular lasestructuras de control del programa en cuestión para una lectura más fácil. Viene a ser como laoración en libros y textos escritos en general.
En ocasiones losprogramadores hablan del número de “líneas de código” que tiene ciertoprograma para hablar de la magnitud o complejidad de este.
Encomputación, el número de línea de una instrucción es un punto bastante útil a la hora decompilar el programa porque habitualmente los compiladores detectanerrores de programación mostrando elnú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 estepasatiempo se le denominaprogramació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 deAscii art con las líneas de su código fuente. En ellenguaje de programación, por ejemplo, una línea de código puede ser: una instrucción acabada en unsalto de línea, una instrucción acabada en unpunto 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");}
De acuerdo aAndrew Tanenbaum, los valores de líneas de código fuente para diferentessistemas operativos de la línea de productos deMicrosoftWindows NT son las siguientes:
| Año | Versión | LCFU (en millones) |
|---|---|---|
| 1993 | Windows NT 3.1 | 4-5[1] |
| 1994 | Windows NT 3.5 | 7-8[1] |
| 1996 | Windows NT 4.0 | 11-12[1] |
| 2000 | Windows 2000 | más de 29[1] |
| 2001 | Windows XP | 40[1] |
| 2005 | Windows Vista Beta 2 | más de 50 |
David A. Wheeler ha estudiado el sistema operativoRed Hat (distribución delos 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ó queDebian 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[2][3] |
| Debian 3.0 | 104 /> |
| Debian 3.1 | 215 /> |
| Debian 4.0 | 283 /> |
| OpenSolaris | 9,7 |
| FreeBSD | 8,8 |
| Mac OS X 10,4 | 86[4] |
| 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] |
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.
.cxx,.cpp,.h y.c dentro y debajo del directorio actual, se pueden usar los comandosPOSIX:find ywcfind.\(-name'*.[ch]'-o-name'*.cxx'-o-name'*.cpp'\)|xargswc-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'scyclomatic 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 enInternet Archive; véase elhistorial, laprimera 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" |
Get-ChildItem -recurse -include *.cxx,*.cpp,*.h,*.c | Get-Content | Measure-Object -linels -r -i *.cxx,*.cpp,*.h,*.c | gc | measure-object -l