Un contador puede ser coherente y responder una pregunta más estrecha de lo que sugiere el título. SourceTally define una línea física como texto terminado por LF, CRLF o CR, más un segmento final sin terminador. Separa las líneas solo con espacios. La regla es reproducible para texto compatible con UTF-8, pero no identifica sentencias, rutas ejecutables, declaraciones, comentarios, código generado ni valor.
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.
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.
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.