SLOC significa Source Lines of Code, es decir, líneas de código fuente, pero designa una familia de medidas y no un total universal. El conteo físico sigue las filas de texto; el lógico, las construcciones del lenguaje. SourceTally cuenta deliberadamente segmentos físicos terminados por LF, CRLF o CR, más el segmento final sin terminador, y separa las líneas con solo espacios. No presenta ese total como SLOC sin comentarios ni como SLOC lógico.

Una definición útil de SLOC debe indicar la regla

Antes de comparar dos valores SLOC, indica si cuentan líneas físicas o sentencias lógicas y si incluyen líneas vacías, comentarios, archivos generados, pruebas, dependencias externas y archivos fallidos. Registra también herramienta y versión. Sin esas decisiones, la misma etiqueta describe poblaciones distintas y los totales no son comparables.

El formato puede cambiar el SLOC físico sin cambiar la sentencia

La declaración const total = price * quantity; ocupa una línea física y es una sentencia lógica. Si se divide después del signo igual y antes del punto y coma, ocupa tres líneas físicas no vacías, pero sigue siendo una declaración. El contador físico debe reflejar el cambio de formato; el lógico necesita la gramática de JavaScript para reconocer la misma construcción.

Las líneas físicas describen el formato

Una sentencia puede ocupar una línea o veinte tras formatearla. Un paquete minificado puede contener mucho comportamiento en una línea. Documentación, configuración, datos de prueba, clientes generados y datos pueden añadir miles de líneas sin lógica nueva. Usa el total para inventariar una instantánea, no para clasificar capacidad técnica.

El SLOC lógico necesita gramática

Una línea lógica intenta contar construcciones, no filas visuales. Punto y coma, sangría significativa, expresiones multilínea, macros, plantillas, lenguajes embebidos, cadenas y preprocesador vuelven la definición específica del lenguaje. SourceTally no presenta una división de texto o signos como conteo lógico universal.

Los comentarios requieren contexto léxico

Los mismos caracteres pueden iniciar comentario, estar en una cadena, expresión regular o lenguaje embebido. Un bloque cruza fragmentos y líneas. La documentación puede ser fuente y documento a la vez. Separar código y comentario requiere analizadores revisados y políticas explícitas; la primera versión muestra total, vacías y no vacías.

Compara ejecuciones equivalentes

Registra commit o instantánea, exclusiones, fallos, codificación, generados y versión. Una diferencia solo tiene sentido con condiciones iguales. Aun así, más líneas pueden ser pruebas, validación, documentación, interfaces generadas o duplicación. Trata la cifra como señal para investigar, nunca como objetivo aislado de rendimiento.