19

在构建时,我希望能够在构建输出窗口中打印一条消息,而不会将其归类为警告。即在 Visual Studio 错误列表中,我希望它仅在您打开“消息”过滤器时才显示。

所以,我想要与 #warning Warning Message 但我不希望它被归类为警告的相同功能。

语境:

我有很多项目目前会产生很多警告。我首先想做的是防止引入新的警告。所以,我有:

  1. 打开“警告为错误”
  2. 通过并用于#pragma warning disable/restore消除现有的警告。

但是,对于我禁用的警告,我想打印一条消息,表明这里有一个需要调查的警告(因为我还没有调查这些警告需要做什么)。例如,许多警告是“过时”类型的警告,我们确实需要在某些时候去做一些工作。所以,我不希望这些警告消失。

理想情况下,我会做这样的事情:

#pragma warning disable 0618
#message Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

我对处理这个问题的其他方法持开放态度。

4

3 回答 3

8

根据 MSDN,您不能扩展:http #pragma: //msdn.microsoft.com/en-us/library/x74w198a.aspx

但是,如果 ErrorList 不是严格要求,您可以解决这个问题:您可以使用注释来突出显示对您很重要的事情。如果您在评论开头添加特殊标记,您将能够在任务列表窗口中跟踪它。
因此,您的代码将如下所示:

#pragma warning disable 0618
//TODO: Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

之后,如果您打开视图 -> 任务列表 -> 在下拉列表中选择评论,您将在那里看到您的评论。
有 3 个预定义标记:TODO、HACK 和 UNDONE - 您可以添加自己的类似 MESSAGE 并更改其优先级,以使您的代码看起来与您最初期望的相似:

#pragma warning disable 0618
//MESSAGE: Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

您可以在此处找到有关令牌的更多信息:http: //msdn.microsoft.com/en-us/library/zce12xx2 (v=vs.100).aspx

值得一提的是,如果您使用 Resharper,它还有另一个 TODO 工具。我会在这里找到它:ReSharper -> 工具 -> 待办事项

于 2012-12-20T18:30:29.823 回答
3

您应该查看csc 任务的 WarningsNotAsErrors参数。当使用 TreatWarningsAsErrors=true 为该参数指定“可接受”警告列表时,您应该记录现有警告,而新警告将显示为错误。

当然,这并不完全是现有的警告与新的警告,而是一种使用您愿意留下的准确警告编号的方法。

但我的第一个建议是解决这些问题。一旦隐藏在构建之外,它们很少得到解决。

于 2012-12-23T05:41:02.927 回答
2

如果您使用“Premium”或“Ultimate”版本的 Visual Studio,它具有使用规则集进行代码分析的功能。

对于任何项目,当您右键单击并转到属性时,选择代码分析选项卡,它具有各种开箱即用的设置,例如将警告视为错误,禁用某些警告。

您可以将警告配置为忽略或视为错误。您可以使用开箱即用的 Microsoft 规则集,或者您可以根据您的要求构建自定义规则集(这不是很困难并​​且适合我的要求)。

要为托管代码启用代码分析:

  1. 在解决方案资源管理器中选择一个项目。
  2. 在项目菜单上,单击属性。
  3. 单击代码分析。
  4. 选择 Enable Code Analysis on Build(定义 CODE_ANALYSIS 常量)。

有关配置代码分析的详细信息,请访问: http ://seesharper.wordpress.com/2010/04/02/code-analysis-in-team-build-2010/

用于构建自定义规则集:

http://msdn.microsoft.com/en-us/library/dd264974.aspx

http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio- 2010.aspx

学习规则集和代码分析:

http://msdn.microsoft.com/en-us/library/dd264996.aspx

于 2012-12-26T07:13:48.437 回答