限制C ++中的标题包含

时间:2016-11-09 17:07:51

标签: c++ frameworks coding-style qa restriction

在某些Cpp文件中限制使用某些标头(库本身的功能)的最佳方法是什么。如果它不遵守既定规则,则应停止编译    这不是要找出多余的包含。这是关于将开发人员限制在应用程序框架中。
例如,如果存在一个osUtils类作为osUtils.h,并且如果按照这个原因,该应用程序的开发框架要求使用osUtils.h进行文件系统操作,例如创建一个文件夹。但是通过包含sys / stat并使用mkdir()方法,单个模块总是有可能通过它来方便地破坏这个规则。但是,如果在这里提供框架的意图允许跨平台抽象或特殊路径处理逻辑,那么通过框架实现它就会失去目标。有没有办法限制这个?比如在某些文件中限制sys / stat.h的使用(在这种情况下,osUtils.h文件除外)可以帮助解决问题。但如何实现它,以便在规则被破坏时不会编译。

1 个答案:

答案 0 :(得分:0)

我不知道如何通过破坏编译来实现这一点 - 由于有效的代码而导致编译失败的想法对我没有吸引力。我还有其他一些想法:

  1. 代码审核。如果做得好,这应该可以防止这样的错误。
  2. 我很确定某些静态代码分析工具可以帮助检测 那些东西(他们可以检查'包括你用的东西'等等 规则'不包括'XYZ'应该在那里)
  3. 如果准备好此静态分析工具,则会让人们使用它并修复它所显示的错误。您可以使用的一个选项是git hook。如果新代码未通过静态分析 - 拒绝提交。如果您不能使用挂钩,或者不想 - 创建一个单独的CI作业来检查是否违反了静态检查。然后你会看到谁和什么时候推了一些不好的代码。