frameworks — Ограничение включений заголовка в переполнении стека

Каков наилучший способ ограничить использование определенных заголовков (функций самой библиотеки) в определенных файлах Cpp. И если он не соответствует установленным правилам, компиляция должна быть остановлена.
Это не об обнаружении лишних включений. Речь идет об ограничении разработчиков рамками приложения.
Например, если существует класс osUtils как osUtils.h, и если в соответствии с этим, среда разработки этого приложения предписывает использование osUtils.h для работы файловой системы, например, для создания папки. но всегда есть шанс, что отдельному модулю будет удобно нарушить это правило, включив sys / stat и используя метод mkdir (). Но если намерение предоставить здесь фреймворк, скажем, для кроссплатформенной абстракции или специальной логики обработки пути, цель теряется, если делать это вне фреймворка. Есть ли способ ограничить это? Например, ограничение использования sys / stat.h в определенных файлах (за исключением файла osUtils.h в этом случае) может помочь решить проблему. но как реализовать это, чтобы оно не скомпилировалось, если правило нарушено.

-1

Решение

Я не знаю, как сделать это, нарушив компиляцию — идея сбоя компиляции из-за корректного кода мне не нравится. У меня есть несколько других идей:

  1. Обзор кода. Если все сделано правильно, это должно предотвратить такие ошибки.
  2. Я уверен, что какой-то инструмент статического анализа кода может помочь обнаружить
    эти вещи (они могут проверять такие вещи, как «включить то, что вы используете», так
    там должно быть правило «не включать» XYZ «)
  3. Если у вас есть готовый инструмент статического анализа, есть проблема с тем, чтобы заставить людей использовать его и исправить ошибки, показанные им. Одним из вариантов, который вы можете использовать, является git hook. Если новый код не проходит статический анализ — отклоните коммит. Если вы не можете использовать хуки или не хотите — сделайте отдельное задание CI, которое проверит нарушения статической проверки. Тогда вы увидите, кто и когда выдал какой-то плохой код.
0

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

Других решений пока нет …

По вопросам рекламы [email protected]