在我曾经工作的一家公司中,构建系统被设置为仅在更改的代码内将警告变成错误。它通过提供生成差异(通常在您尝试合并的分支与master
之间),然后将该差异提供给某些编译工具来工作,该工具仅在提供的差异内产生警告。
这很棒,因为它允许您例如弃用某些功能,并让构建系统阻止人们介绍该功能的新用法,然后在以后删除该功能的旧用法。
不幸的是,在离开公司之前,我对设置的关注不够,也不知道如何复制它。我的问题:如何复制此设置?
问题被标记为Clang,但我也会对使用其他编译器工具的答案感兴趣。
答案 0 :(得分:0)
如果我必须实现这一点,我的第一个想法是:
#pragma
指令 1 ,以在更改的区域附近本地启用/禁用警告。#line
指令,使警告/错误看起来像是来自原始文件。1 例如https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas用于GCC。
答案 1 :(得分:-1)
Clang支持GCC的#pragma diagnostic
。
例如:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
// ... changed code here ...
#pragma GCC diagnostic pop
MSVC也有类似的东西:
#pragma warning(push, 3)
// ... changed code here ...
#pragma warning(pop)