Ну, так как это часть препроцессора ... # Включение рефакторинга - огромная огромная тема, и я не знаю ни одного инструмента, который бы делал это действительно хорошо.
Тривиальные проблемы, с которыми может справиться инструмент:
- Обеспечение согласованного использования регистра и обратной косой черты в # включает
- Принять согласованное соглашение о защите заголовков, автоматически добавлять избыточные внешние средства защиты и т. Д.
Более сложные проблемы, с которыми может справиться инструмент:
- Поиск и удаление ложных включений.
- Предложите использовать предикларации везде, где это возможно.
Для макросов ... возможно, было бы интересно найти какую-то область видимости, где, если вы # определите макрос внутри блока, инструмент автоматически #undef определит его в конце блока. Другие быстрые вещи, о которых я могу думать:
- Может быть полезен быстрый анализ безопасности макросов, так как многие люди до сих пор не знают, как использовать do {} while (0) и другие методы.
- Кроме того, найдите и пометьте места, где выражения с побочными эффектами передаются в качестве аргументов макроса. Это может быть очень полезно для таких вещей, как ... заявления с непреднамеренными побочными эффектами.