如果使用某些过时的C/C++函数,则阻止使用svn提交代码

qst*_*ter 1 c c++ svn

有没有办法阻止开发人员在使用某些不安全或过时的函数时提交代码?例如:

  • scanf函数
  • 的atoi
  • 得到
  • 等等..

Mic*_*urr 8

我工作的一个项目在每个文件中包含的标题中使用了一组简单的宏(一些编译器允许您在命令行中指定这样的标题,因此您可以强制它在makefile中使用):

#define strcpy  strcpy_is_banned_use_strlcpy
#define strcat  strcat_is_banned_use_strlcat
#define strncpy strncpy_is_banned_use_strlcpy
#define strncat strncat_is_banned_use_strlcat
#define sprintf sprintf_is_banned_use_snprintf
Run Code Online (Sandbox Code Playgroud)

使用这些宏,如果您尝试使用禁用的函数,构建将失败(链接器将告诉您应该使用什么).

因此,它本身不会在提交时进行检查,但只要您的团队成员在签入之前确保构建内容,系统就可以正常工作.如果他们不这样做,那么每个人都开始获得构建中断电子邮件,这往往会快速纠正行为.

简单但有效.


Man*_*kis 6

您可以使用Subversion预提交挂钩.示例:http://wordaligned.org/articles/a-subversion-pre-commit-hook

编写一些正则表达式来扫描提交以获取您不想要的函数应该不会太难