Есть ли инструмент для enums глобальных переменных, используемых и выводимых с помощью функции C?

Я хочу составить список глобальных переменных / макросов, потребляемых функцией и выводимых функцией. Например, для:

void myfn(void) { out1 = in + 1; out2 = 2; } 

.. инструмент будет перечислять входы как «in», а выходы – «out1» и «out2».

Кто-нибудь знает о таком инструменте?

Понимание для C / C ++ ( http://www.scitools.com/products/understand/ )

Наш DMS Software Reengineering Toolkit – это настраиваемый инструмент анализа программ с качеством C Front Front .

Он анализирует C, строит таблицы AST и таблиц символов, обеспечивает анализ управления и streamа данных, а также строит глобальные графики вызовов и имеет точки для анализа. Его можно настроить для извлечения этой информации; Фактически, мы поставили собственный инструмент на основе DMS для крупного производителя транспортных средств для создания инструмента для получения практически такой информации.

Если вы придерживаетесь только информации таблицы символов, вы можете извлечь «прямое чтение или запись», как в вашем примере. Если вы используете информацию о графике вызовов, вы можете обнаружить чтение или запись в глобальные переменные, вызванные вызовами других функций. Если вы используете анализ точек, вы можете обнаружить (консервативно) чтение или запись в глобальные переменные по косвенности.

Вы можете попробовать также CppDepend , NDepend, как для C \ C ++

Clang, по крайней мере, может это сделать, но это может быть не самый простой способ. Вам нужно будет взаимодействовать с C ++ API.