• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Calculate LLOC С++

Andriy_abc

Ученик
Регистрация
31 Мар 2014
Сообщения
8
Реакции
0
Баллы
0
Calculate LLOC С++

Пожалуйста посоветуйте, чтоб не изобретать велосипед.

Задача расчет LLOC (Source lines of code). Нужен код, готовая реализация не подходит.

Вопрос: возможно, есть код парсера, который реализует похожие задачи. Пож. подскажите ссылку. Если такой реализации нет, подскажите статейку о похожих парсерах, чтоб не начинать решать задачу с нуля.

Заранее большое спасибо за Ваше время.

P.S. К сожалению подсчет ‘;’ или ‘/n’ и т.д. не подходит как упрощенный вариант решения.
 
Для какого языка нужно подсчитывать кол-во строк кода?
п.с. из вики
"Logical SLOC attempts to measure the number of executable "statements", but their specific definitions are tied to specific computer languages (one simple logical SLOC measure for C-like programming languages is the number of statement-terminating semicolons"
 
1. Общая задача: Подсчёт количества ЛОГИЧЕСКИХ строк кода (т.е. количество операторов в программе). В данном случае весь код в одном файле для которого надо посчитать LLOC.
2. Язык С++, язык анализируемого кода С++
3. Лямбды считать не надою
4. В анализируемом коде также не используются функции (макросы и проч.) из библиотек, все определено в этом же файле. Т.е. тело ф-й и макросов доступно для анализа.
 
Слушай, а им точно нужно все операторы?
сюда по их примеру запись for (i = 0; i < 100; i++) тоже логическая запись. Это же сдуреть можно все ключевые слова парсить! Тупое задание. Нет что бы что-то на паттерны проектирования задать, или, например, разработать класс какой-то полноценный.
А так целую неделю с ключевыми словами c++ страдать, чтобы потом тебе ничего не ответили, правильно, ты сделал или нет :)
Честно говоря, харит тоже изобретать велосипед. Я видел решения где идет подсчет строк с отделением от комментов и переносов на другие строки, но так чтобы по операторам это было не видел. Но должно быть все таки где-то уже решение. Люди добрые не скупитесь - поделитесь :)
 
Слушай, а им точно нужно все операторы?
сюда по их примеру запись for (i = 0; i < 100; i++) тоже логическая запись. Это же сдуреть можно все ключевые слова парсить! Тупое задание. Нет что бы что-то на паттерны проектирования задать, или, например, разработать класс какой-то полноценный.
А так целую неделю с ключевыми словами c++ страдать, чтобы потом тебе ничего не ответили, правильно, ты сделал или нет :)
Честно говоря, харит тоже изобретать велосипед. Я видел решения где идет подсчет строк с отделением от комментов и переносов на другие строки, но так чтобы по операторам это было не видел. Но должно быть все таки где-то уже решение. Люди добрые не скупитесь - поделитесь :)

Да в том то все и дело, можно считать ';', можно даже уровни '{'. Но никак не могу понять как посчитать операторы, вики пишет что:
Измеряя логические строки кода, предпринимается попытка посчитать количество собственно операторов в программе, простейший способ посчитать количество логических строк кода в Си-в подсчёте числа точек с запятой, заканчивающих операторы.
 
Да в том то все и дело, можно считать ';', можно даже уровни '{'. Но никак не могу понять как посчитать операторы, вики пишет что:
Измеряя логические строки кода, предпринимается попытка посчитать количество собственно операторов в программе, простейший способ посчитать количество логических строк кода в Си-в подсчёте числа точек с запятой, заканчивающих операторы.
Судя по тому, что ответ о правильности дадут день в день, думаю код смотреть будут после того как скомпилят исходник и результат совпадет с их результатом :)

По их подсчету это две лог. строки:
for (i = 0; i < 100; i++)
{
printf("hello");
}
А точек с запятой 3; Значит их в скобках не ловить. А препроцессорные команды считаем тоже логикой? А если внутри макроса зашит целый класс, нужно тоже ловить как-то. Такие проги реальные деньги стоят :) Ой харит парсингом заниматься...
 
А препроцессорные команды считаем тоже логикой? А если внутри макроса зашит целый класс, нужно тоже ловить как-то. Такие проги реальные деньги стоят :) Ой харит парсингом заниматься...

Я думаю стоит пока оставить препроцессовные команды, лямбды и случаи изменения семантики кода, хотябы эту проблему решить. Я с вами согласен что перебирать все операторы С++ не вариант, но что тогда делать?
 
Я думаю, что если результат подсчета не будет равен ожидаемому, работу даже смотреть не будут :)
 
Назад
Сверху