Вышел релиз IWYU (или include-what-you-use), программы позволяющей находить избыточные и предлагать недостающие #include
в вашем коде на C/C++.
«Включать то, что используешь» означает следующее: для каждого символа (типа, переменной, функции или макроса), используемого в foo.cc, либо foo.cc, либо foo.h должны подключать .h-файл, экспортирующий объявление этого символа. Инструмент include-what-you-use – это программа для анализа #include
исходных файлов с целью поиска нарушений этого подхода и выдачи рекомендаций для исправления. Программа использует библиотеки Clang и обычно релиз означает совместимость с новой версией Clang.
Основная цель include-what-you-use - удаление лишних #include
. Для этого необходимо выяснить, какие #include
не нужны в данном файле (как для .cc, так и для .h), и по возможности заменить #include
на предварительное объявление.
Основные изменения
- Совместимость с Clang 17.
- Улучшен анализ псевдонимов типов (
typedef
иusing
). - Улучшен анализ псевдонимов пространств имен (
namespace xyz = foobar
). - Улучшена поддержка развернутых предварительных деклараций (
typedef struct Foo Bar;
). - Улучшить обработку «автокаста» и возвращаемых типов функций, особенно при работе со сложными шаблонными типами.
- Добавлена новая прагма IWYU: always_keep, позволяющая пометить заголовок, что он всегда должен сохраняться, где бы он ни был включен.
- Автоматическое использование сопоставлений для builtins libc++, если libc++ является активной стандартной библиотекой.
- Улучшение сопоставлений для заголовков libc++ и posix.
>>> Подробности