LINUX.ORG.RU

Как посчитать число функций в проекте.

 


0

1

Доброго времени суток.

Есть проект на Qt 4.8.7 с большим объемом файлов с исходным текстом. На основе исходного ПО было создано ПО для обучения представителей заказчика. Руководство поставило задачу посчитать коэффициент заимствования кода который определяется как число функций общих в обоих проектах к числу функций в исходном проекте.

Возможно ли автоматизировано посчитать число функций в проекте (в том числе методов классов C++) с помощью средств QtCreator или другой IDE ?

Пробовал через Visual Studio создавать .MAP файл, но туда попадают и библиотечные вызовы Qt.. Разбор превращается почти в ручной подсчет.

Кто нибудь сталкивался?

Если есть способ получить список функций в произвольном проекте, может, составить два списка — для своего проекта и для Qt, и найти между ними разницу?

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

Qt при компиляции формирует moc_*.cpp файлы, раскрывает свои макросы и определения подключения сигнал-слот и все это создаёт кучу мусора и тысячи наименований. Плюс имена которые обрабатывает линкер имеют весьма специфичный формат в котором кодируются аргументы перегруженных функций/методов.

anonymous
()

Doxygen, только результат придётся парсить.

Вообще любой анализатор кода так или иначе составляет такие списки функций. Мне лично нравится Lizard, у него довольно простой формат выхлопа, удобно парсить, плюс он на Python, можно допиливать по потребности.

E ★★★
()

tags ещё можно натравить. Или скомпилировать с символами, а затем просто nm бинарник там будут помечены функции.

LINUX-ORG-RU ★★★★★
()

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

А свои уникальные метрики изобретать нет большого смысла, ни тебе ни начальству эти цифры сами по себе ничего не дадут.

alpha ★★★★★
()
Ответ на: комментарий от sjinks

Тогда сначала идёт (. То есть есть чёткие случаи когда ясен контекст. А так ctags,nm или иное что само знает где функция, а где что. И да указатель на функцию тоже функция полноценная, вдруг их тоже учитывать надо, мыж не знаем =)

LINUX-ORG-RU ★★★★★
()
Ответ на: удаленный комментарий

Проект используется на Linux (Debian) но я вообще не нашел хоть какого то инструмента для решения задачи…

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.