2016-11-09 4 views
-1

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

+0

Стандартные стандарты кодирования - это скорее проблема управления, чем программирование. – Barmar

+0

Сделайте свой дизайн для защиты от непреднамеренного использования в ваших классах API, а не для ограничений в отношении отдельных файлов заголовков. –

ответ

0

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

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