Инструменты динамического удаления мертвого кода для сложных проектов C ++

У нас есть проект с большим количеством кода, часть которого является наследием.
Как часть рабочего процесса, время от времени проверяется вся функциональность продукта.
Интересно, есть ли способ использовать этот факт для динамической проверки того, какие части кода никогда не использовались? (Сложная часть — это код на C ++, .Net и Java более подконтрольны и менее унаследованы).

Кроме того, существуют ли инструменты динамического удаления мертвого кода, которые могут работать с большим количеством кода и сложных проектов (т.е. ~ 1 млн строк)?

Все похожие вопросы, которые я нашел, говорили о статическом анализе, который мы все готовы сделать.

Спасибо!

1

Решение

Возможно, вы захотите взглянуть на инструменты покрытия кода, которые используются в тестировании. Идея этих инструментов заключается в том, что они инструментируют код, и после запуска набора тестов вы знаете, какие строки кода были выполнены хотя бы один раз, а какие строки никогда не выполнялись. После этого вы можете улучшить тесты.

То же самое можно использовать для идентификации мертвого кода в случае, если у вас достаточно разнообразная среда исполнения.

3

Другие решения

Я не знаю, на какой платформе вы работаете, но мы успешно использовали Gcov, если вы компилируете с помощью цепочки инструментов gnu:

http://gcc.gnu.org/onlinedocs/gcc/Gcov.html

0