21.08.2015, 12:39 | #1 (permalink) |
Новичок
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Calculate LLOC С++
Задача расчет LLOC (Source lines of code). Нужен код, готовая реализация не подходит. Вопрос: возможно, есть код парсера, который реализует похожие задачи. Пож. подскажите ссылку. Если такой реализации нет, подскажите статейку о похожих парсерах, чтоб не начинать решать задачу с нуля. Заранее большое спасибо за Ваше время. P.S. К сожалению подсчет ‘;’ или ‘/n’ и т.д. не подходит как упрощенный вариант решения. |
21.08.2015, 18:17 | #2 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
Для какого языка нужно подсчитывать кол-во строк кода?
п.с. из вики "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" |
21.08.2015, 20:43 | #3 (permalink) |
Новичок
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
1. Общая задача: Подсчёт количества ЛОГИЧЕСКИХ строк кода (т.е. количество операторов в программе). В данном случае весь код в одном файле для которого надо посчитать LLOC.
2. Язык С++, язык анализируемого кода С++ 3. Лямбды считать не надою 4. В анализируемом коде также не используются функции (макросы и проч.) из библиотек, все определено в этом же файле. Т.е. тело ф-й и макросов доступно для анализа. |
21.08.2015, 21:17 | #4 (permalink) |
Новичок
Регистрация: 21.08.2015
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Слушай, а им точно нужно все операторы?
сюда по их примеру запись for (i = 0; i < 100; i++) тоже логическая запись. Это же сдуреть можно все ключевые слова парсить! Тупое задание. Нет что бы что-то на паттерны проектирования задать, или, например, разработать класс какой-то полноценный. А так целую неделю с ключевыми словами c++ страдать, чтобы потом тебе ничего не ответили, правильно, ты сделал или нет Честно говоря, харит тоже изобретать велосипед. Я видел решения где идет подсчет строк с отделением от комментов и переносов на другие строки, но так чтобы по операторам это было не видел. Но должно быть все таки где-то уже решение. Люди добрые не скупитесь - поделитесь |
21.08.2015, 21:47 | #5 (permalink) | |
Новичок
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
Измеряя логические строки кода, предпринимается попытка посчитать количество собственно операторов в программе, простейший способ посчитать количество логических строк кода в Си-в подсчёте числа точек с запятой, заканчивающих операторы. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
21.08.2015, 22:16 | #6 (permalink) | |
Новичок
Регистрация: 21.08.2015
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
По их подсчету это две лог. строки: for (i = 0; i < 100; i++) { printf("hello"); } А точек с запятой 3; Значит их в скобках не ловить. А препроцессорные команды считаем тоже логикой? А если внутри макроса зашит целый класс, нужно тоже ловить как-то. Такие проги реальные деньги стоят Ой харит парсингом заниматься... |
|
21.08.2015, 22:57 | #7 (permalink) |
Новичок
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Я думаю стоит пока оставить препроцессовные команды, лямбды и случаи изменения семантики кода, хотябы эту проблему решить. Я с вами согласен что перебирать все операторы С++ не вариант, но что тогда делать?
|
24.08.2015, 19:22 | #9 (permalink) |
Новичок
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|