Вопрос

Я получил пакет файлов C++ со статическим исходным кодом (уже разработан, с ними ничего делать не нужно).

Есть ли программа/библиотека/способ получить список количества параметров каждой функции в одном из этих файлов?

Я имею в виду получение результата вроде:

#File a.cpp
##a() -> 3 paramss
##foo() -> 0 params (void)

#File b.cpp
##test() -> 1 param

....

И еще лучший вопрос.

Есть ли способ обработать количество возвратов?

#File a.cpp
##a() -> 3 params, 1 return
##foo() -> 0 params (void), 2 returns

Например, если «foo» возвращает значение, если условие истинно, и другое, если условие ложно.

Заранее спасибо.

Это было полезно?

Решение

Вы можете попробовать запустить Доксиген поверх исходных файлов.

Поскольку содержимое (предположительно) недокументировано, вам необходимо настроить doxygen для извлечения содержимого из недокументированных файлов.

Если вы просто хотите просмотреть список доступных функций, вы можете использовать вывод HTML.

Вы также можете настроить вывод Doxygen в формате XML, а затем написать синтаксический анализатор для получения статистики, которую вы ищете для каждой функции.

Другие советы

Я бы посчитал количество «,» и начал с 1.Это должно дать вам точный подсчет количества аргументов функции.Затем я бы проверил, существует ли «void» перед именем функции, если нет, то вы можете поспорить, что есть возвращаемое значение.

ifstream infile;
infile.open(...);
int i, ret, args;
String s;

ret = args = 0;
s = infile.getline();
for( i=0; s[i] != '('; i++ ) {
 if( s[i] == 'v' && s[i+1] == 'o' && s[i+2] == 'i' && s[i+3] == 'd' ) {
  ret = 1;
  break;
 }
}

for( i=0; s[i] != '('; i++ ) {}

for( i; s[i] != ')'; i++ ) {
 if( args == 0 && s[i] != ' ' ) {
  args++;
 }
 if( s[i] == ',' ) {
  args++;
 }
}

Все это слишком, но, может быть, это твоя чашка чая, Эльза может анализировать C++ и предоставлять вам абстрактное синтаксическое дерево анализируемого файла.Возможно, есть другие бесплатные инструменты, которые могут сделать то же самое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top