LINUX.ORG.RU

IWYU 0.21

 , iwyu


1

3

Вышел релиз 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.

>>> Подробности



Проверено: hobbit ()

Ответ на: комментарий от NickNotNick

Есть Chrome, зачем Firefox?

Чтобы гугл не попилили антимонопольщики, если у chrome будет 100% рынка.

Есть Windows, зачем Linux?

Да в принципе он не нужен. Можно выкидывать.

hateyoufeel ★★★★★
()
Ответ на: комментарий от NickNotNick

Есть Windows, зачем Linux?

есть Linux, зачем Windows?

исправил. не благодари.

P.S. для autocad наверное ))

samy_volosaty ★★★★★
()
Ответ на: комментарий от NickNotNick

Есть Chrome, зачем Firefox?

Тут, скорее, аналогия «Есть Chrome, зачем отдельная программа для чтения ЛОРа»? При том, что да, такую программу даже писали.

Но я бы функциональность этой программы предложил в виде набора патчей для cppcheck, например (если он такого ещё не умеет).

hobbit ★★★★★
()
Ответ на: комментарий от dataman

Корректнее, наверное написать «potential bugs». Или вы таки хотите сказать, что у cppcheck не бывает ложных срабатываний? Я вас таки умоляю.

А отсутствующий #include, без которого программа где-то соберётся, где-то нет — это именно potential bug.

hobbit ★★★★★
()
Ответ на: комментарий от dataman

Значит, кто-то должен эти патчи написать.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

А отсутствующий #include, без которого программа где-то соберётся, где-то нет — это именно potential bug.

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

gns ★★★★★
()
Ответ на: комментарий от NickNotNick

А как? Анализатору нужно все окружение целевой платформы. А оно, как минимум, зависит от ее версии.

gns ★★★★★
()
Ответ на: комментарий от dataman

Ну натрави cppcheck на исходники systemd :) Memory leaks огребешь ведрами. А все потому, что Лёня знает за атрибут autofree и активно его пользует. А cppcheck — нет :)

gns ★★★★★
()
Ответ на: комментарий от dataman

А без разницы, что у тебя. Я как-то почти год занимался аутсорсной работой по анализу логов swacе'a и cppcheck'a после их работы над полным деревом исходников для дистрибутива, идущего на сертификацию то-ли во ФСТЭК, то-ли в ФСБ... Такого насмотрелся...

gns ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.