Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 限制C+中的标题包含+;_C++_Frameworks_Coding Style_Qa_Restriction - Fatal编程技术网

C++ 限制C+中的标题包含+;

C++ 限制C+中的标题包含+;,c++,frameworks,coding-style,qa,restriction,C++,Frameworks,Coding Style,Qa,Restriction,限制在某些Cpp文件中使用某些标题(库本身的功能)的最佳方法是什么。如果未能遵循设置的规则,编译应停止。 这不是为了找出多余的内容。这是关于限制开发人员使用应用程序框架 例如,如果存在一个名为osUtils.h的osUtils类,并且根据该类,该应用程序的开发框架强制使用osUtils.h进行文件系统操作,比如创建文件夹。但总有这样一种可能,即单个模块发现通过包含sys/stat并使用mkdir()方法打破这一规则很方便。但是,如果在这里提供一个框架的目的是为了跨平台抽象或特殊的路径处理逻辑,那

限制在某些Cpp文件中使用某些标题(库本身的功能)的最佳方法是什么。如果未能遵循设置的规则,编译应停止。
这不是为了找出多余的内容。这是关于限制开发人员使用应用程序框架

例如,如果存在一个名为osUtils.h的osUtils类,并且根据该类,该应用程序的开发框架强制使用osUtils.h进行文件系统操作,比如创建文件夹。但总有这样一种可能,即单个模块发现通过包含sys/stat并使用mkdir()方法打破这一规则很方便。但是,如果在这里提供一个框架的目的是为了跨平台抽象或特殊的路径处理逻辑,那么在框架之外这样做就失去了目标。有没有办法限制这一点?例如,限制sys/stat.h在某些文件中的使用(本例中的osUtils.h文件除外)可以帮助解决此问题。但是如何实现它,使其在规则被破坏时不会编译。

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

  • 代码审查。如果操作正确,这将防止此类错误
  • 我非常确信一些静态代码分析工具可以帮助检测 这些东西(他们可以检查“包括你使用的东西”,所以 规则“不包括”XYZ“应存在)
  • 如果您已经准备好了这个静态分析工具,那么让人们使用它并修复它所显示的错误就会出现问题。您可以使用的一个选项是GitHook。如果新代码没有通过静态分析-拒绝提交。如果不能使用钩子,或者不想使用钩子,则创建一个单独的CI作业来检查是否违反了静态检查。然后,您将看到谁以及何时推送了一些错误代码

  • 实施编码标准比编程更像是一个管理问题。请确保您的设计能够防止在API类中意外使用,而不是限制包含特定的头文件。