Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 21.08.2015, 12:39   #1 (permalink)
Andriy_abc
Новичок
 
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Calculate LLOC С++

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

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

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

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

P.S. К сожалению подсчет ‘;’ или ‘/n’ и т.д. не подходит как упрощенный вариант решения.
Andriy_abc вне форума   Ответить с цитированием
Старый 21.08.2015, 18:17   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 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"
kreol вне форума   Ответить с цитированием
Старый 21.08.2015, 20:43   #3 (permalink)
Andriy_abc
Новичок
 
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

1. Общая задача: Подсчёт количества ЛОГИЧЕСКИХ строк кода (т.е. количество операторов в программе). В данном случае весь код в одном файле для которого надо посчитать LLOC.
2. Язык С++, язык анализируемого кода С++
3. Лямбды считать не надою
4. В анализируемом коде также не используются функции (макросы и проч.) из библиотек, все определено в этом же файле. Т.е. тело ф-й и макросов доступно для анализа.
Andriy_abc вне форума   Ответить с цитированием
Старый 21.08.2015, 21:17   #4 (permalink)
ewg
Новичок
 
Регистрация: 21.08.2015
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Слушай, а им точно нужно все операторы?
сюда по их примеру запись for (i = 0; i < 100; i++) тоже логическая запись. Это же сдуреть можно все ключевые слова парсить! Тупое задание. Нет что бы что-то на паттерны проектирования задать, или, например, разработать класс какой-то полноценный.
А так целую неделю с ключевыми словами c++ страдать, чтобы потом тебе ничего не ответили, правильно, ты сделал или нет
Честно говоря, харит тоже изобретать велосипед. Я видел решения где идет подсчет строк с отделением от комментов и переносов на другие строки, но так чтобы по операторам это было не видел. Но должно быть все таки где-то уже решение. Люди добрые не скупитесь - поделитесь
ewg вне форума   Ответить с цитированием
Старый 21.08.2015, 21:47   #5 (permalink)
Andriy_abc
Новичок
 
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от ewg Посмотреть сообщение
Слушай, а им точно нужно все операторы?
сюда по их примеру запись for (i = 0; i < 100; i++) тоже логическая запись. Это же сдуреть можно все ключевые слова парсить! Тупое задание. Нет что бы что-то на паттерны проектирования задать, или, например, разработать класс какой-то полноценный.
А так целую неделю с ключевыми словами c++ страдать, чтобы потом тебе ничего не ответили, правильно, ты сделал или нет
Честно говоря, харит тоже изобретать велосипед. Я видел решения где идет подсчет строк с отделением от комментов и переносов на другие строки, но так чтобы по операторам это было не видел. Но должно быть все таки где-то уже решение. Люди добрые не скупитесь - поделитесь
Да в том то все и дело, можно считать ';', можно даже уровни '{'. Но никак не могу понять как посчитать операторы, вики пишет что:
Измеряя логические строки кода, предпринимается попытка посчитать количество собственно операторов в программе, простейший способ посчитать количество логических строк кода в Си-в подсчёте числа точек с запятой, заканчивающих операторы.
Andriy_abc вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 21.08.2015, 22:16   #6 (permalink)
ewg
Новичок
 
Регистрация: 21.08.2015
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

По их подсчету это две лог. строки:
for (i = 0; i < 100; i++)
{
printf("hello");
}
А точек с запятой 3; Значит их в скобках не ловить. А препроцессорные команды считаем тоже логикой? А если внутри макроса зашит целый класс, нужно тоже ловить как-то. Такие проги реальные деньги стоят Ой харит парсингом заниматься...
ewg вне форума   Ответить с цитированием
Старый 21.08.2015, 22:57   #7 (permalink)
Andriy_abc
Новичок
 
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от ewg Посмотреть сообщение
А препроцессорные команды считаем тоже логикой? А если внутри макроса зашит целый класс, нужно тоже ловить как-то. Такие проги реальные деньги стоят Ой харит парсингом заниматься...
Я думаю стоит пока оставить препроцессовные команды, лямбды и случаи изменения семантики кода, хотябы эту проблему решить. Я с вами согласен что перебирать все операторы С++ не вариант, но что тогда делать?
Andriy_abc вне форума   Ответить с цитированием
Старый 22.08.2015, 12:18   #8 (permalink)
ewg
Новичок
 
Регистрация: 21.08.2015
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я думаю, что если результат подсчета не будет равен ожидаемому, работу даже смотреть не будут
ewg вне форума   Ответить с цитированием
Старый 24.08.2015, 19:22   #9 (permalink)
Andriy_abc
Новичок
 
Регистрация: 31.03.2014
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от ewg Посмотреть сообщение
Я думаю, что если результат подсчета не будет равен ожидаемому, работу даже смотреть не будут
Да такое возможно, в любом сл спс за помощь
Andriy_abc вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:02.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.