2012-12-14 61 views
18

的消息在构建时,我希望能够打印一个消息到生成输出窗口,而无需它被列为警告。即在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 

我愿意处理这一问题的其他方法。

+0

编写一个小小的结节来搜索#Pragma warning disable,然后输出,然后在after build事件中调用它? –

+0

构建问题的另一种方法是:将“警告作为错误开启”,所有警告现在都是错误。然后有办法将现在的错误恢复为警告。因此,即使在“警告为错误”的情况下,也可以获得警告。 –

+0

@丹,是的。那将会很棒。 –

回答

6

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

但如果ErrorList不严格的要求,就可以解决这个问题:你可以使用注释以突出的东西对你很重要。 如果您在评论开始时添加特殊标记,则可以在TaskList窗口中对其进行跟踪。
所以,你的代码如下:

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

在这之后,你是否会打开查看 - >任务列表 - >在下拉列表中选择注释,你会在那儿你的评论。
有3个预定义的标记:TODO,黑客和UNDONE - 你可以添加自己喜欢消息,并改变它的优先级,以使你的代码看起来类似于您最初的设想:

#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的 - >工具 - >待办事项

+0

谢谢,我认为这可能是一个“足够接近”的解决方案。我真的希望在构建时会有更多“面对面”的东西,但这确实提供了一个跟踪它们的解决方案。如果我没有得到任何我很快会喜欢的答案,我会回来并将其标记为“接受的答案”。 –

1

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

Ofcourse,这是不完全与现有新的警告,但方式与您熟悉的离开确切警告编号工作。

但我的第一个建议是只修复这些。一旦隐藏在构建之外,他们很少得到解决。

+0

如果我可以单独列出手动创建的警告(即使用#warning创建的警告),这可能会起作用。我很想解决警告,但有些会花时间+其他人采取行动,所以同时我想阻止创建新的警告。 –

2

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

对于任何项目,当你右键点击&去属性,选择代码分析选项卡,它有各种出箱设置,如将警告视为错误,禁用某些警告。

您可以将警告配置为忽略或视为错误。您可以使用开箱即用的Microsoft规则集,或者您可以按照您的要求构建自定义规则集(对于我的要求,这不是非常困难的&)。

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

  1. 选择在Solution Explorer中的一个项目。
  2. 在项目菜单上,单击属性。
  3. Click代码分析。
  4. 选择在编译时启用代码分析(定义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

+0

有趣。我有保费,所以我会在我回去工作的时候尝试一下。谢谢! –