11

我们喜欢将警告作为错误设置,因为我们有一个不签入带有警告的代码的策略,这是我们发现的唯一有效的实施方式。

我们还喜欢使用Obsolete 属性来标记不应再使用的方法。

问题是,将 Obsolete 属性添加到方法或类会立即导致大量项目无法构建(更不用说不推荐使用 .NET API 调用时的问题)。

有没有人对此有很好的解决方案?

我们想要一个可见的、难以忽略的指示符,表明您正在使用已弃用的 API,但不会导致构建失败。我们希望在 IDE 和 CI 构建中看到警告。

4

3 回答 3

2

一个简单的解决方案是在没有错误警告的情况下进行构建配置(例如您的调试构建配置)。但是,如果重点是向您的开发人员标记构建时出现问题,那是不好的,因为他们会忘记在签入之前进行发布构建。

或者,您可以将规则集设置为自己抛出错误而不是引发警告,而不是使用“警告作为错误”。当然,这意味着非 CA 警告不会导致错误。

我认为最好的解决方案是在服务器端处理它。理想情况下,您会有某种门控签入,以便您的代码存储库拒绝不使用其构建定义构建的提交(打开警告作为错误,并且您的开发人员可以关闭警告作为错误)。我怀疑这是 TFS-2k10 独有的功能。

于 2011-01-04T23:27:23.043 回答
1

这个其他堆栈溢出帖子应该会有所帮助: https ://stackoverflow.com/a/468166/9195608

基本上它说:

您可以在项目文件中添加 WarningsNotAsErrors-tag。

<PropertyGroup>
    ...
    ...
    <WarningsNotAsErrors>612,618</WarningsNotAsErrors>
</PropertyGroup>

注意:612 和 618 都是关于 Obsolete 的警告

612 和 618 的区别在于 ObsoleteAttribute 的注释。没有注释的 ObsoleteAttribute 会生成错误 612,而有注释的则会生成 618。

于 2018-08-07T18:58:01.460 回答
0

如此处所述/sdl (Enable Additional Security Checks),如果您关闭 SDL,编译器会将其视为警告。

于 2020-05-28T20:39:08.043 回答