SLOC означает Source Lines of Code — строки исходного кода, но это семейство метрик, а не один универсальный итог. Физический подсчёт следует строкам текста, логический — конструкциям языка. SourceTally намеренно считает физические сегменты до LF, CRLF или CR и последний сегмент без перевода строки, отдельно отмечая строки из пробелов. Этот итог не выдаётся за SLOC без комментариев или за логический SLOC.

Определение SLOC должно называть правило подсчёта

Перед сравнением двух значений SLOC укажите, считаются ли физические строки или логические операторы и входят ли пустые строки, комментарии, генерируемые файлы, тесты, сторонние зависимости и файлы с ошибками. Зафиксируйте инструмент и версию. Без этих условий одна метка описывает разные наборы, и итоги несопоставимы.

Форматирование меняет физический SLOC, но не оператор

Объявление const total = price * quantity; занимает одну физическую строку и является одним логическим оператором. Если перенести выражение после знака равенства и точку с запятой на отдельные строки, получится три непустые физические строки, но одно объявление. Физический счётчик обязан показать изменение разметки; логическому нужен синтаксис JavaScript, чтобы распознать прежнюю конструкцию.

Физические строки описывают разметку

Один оператор может занимать одну строку или двадцать после форматирования. Минифицированный bundle может содержать много поведения в одной физической строке. Документация, конфигурация, тестовые фикстуры, сгенерированные клиенты и данные могут добавить тысячи строк без новой логики. Используйте итог как инвентаризацию снимка, а не оценку способности разработчиков.

Логический SLOC требует грамматики

Логическая строка обычно означает конструкцию языка, а не визуальный ряд. Точки с запятой, значимые отступы, многострочные выражения, макросы, шаблоны, встроенные языки, строки и препроцессор делают определение зависимым от языка. SourceTally не выдаёт разбиение текста или поиск знаков за единый точный логический подсчёт для десятков языков.

Комментарии требуют лексического контекста

Одни символы могут начинать комментарий, находиться в строке, регулярном выражении или встроенном языке. Блочный комментарий пересекает куски и строки. Документирующий комментарий бывает кодовой документацией и частью источника. Надёжное разделение требует проверенных лексеров и явной политики, поэтому первая версия показывает только все, пустые и непустые физические строки.

Сравнивайте одинаково настроенные запуски

Запишите коммит или локальный снимок, исключения, ошибки файлов, кодировки, выбор генерируемых файлов и версию инструмента. Разница осмысленна только при одинаковых условиях. И тогда рост может означать тесты, безопасную валидацию, документацию, генерацию интерфейсов или дублирование. Используйте число как сигнал для проверки, а не самостоятельную цель эффективности.