能否将代码分析警告格式化为普通警告?

3
我喜欢VS2012中包含的代码分析功能。但是令人烦恼的是,警告只能在“代码分析”窗口中处理,而不能通过按下F4来逐步查看构建输出。
有没有办法克服这个限制?如何将静态代码分析的输出格式化为正常的编译器输出(即不仅打印文件名,而是打印正在检查的文件的正确路径)?
我没有使用FxCop,因为我正在使用非托管代码。
1个回答

3

针对非托管代码分析,MSBuild脚本使用/analyze:quiet而不是/analyze以避免将结果写入错误列表。要更改此行为的最简单方法是修改您的Microsoft.CodeAnalysis.Targets文件(通常位于C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets),避免指定安静模式。即:更改该行。

<AdditionalOptions Condition="'$(PlatformToolsetVersion)'&gt;='110'">%(ClCompile.AdditionalOptions)  /analyze:quiet</AdditionalOptions>

to

<AdditionalOptions Condition="'$(PlatformToolsetVersion)'&gt;='110'">%(ClCompile.AdditionalOptions)  /analyze</AdditionalOptions>

忘了提到我不是在谈论FxCop,而是针对非托管文件的分析。问题已更新。 - eckes
在底层本质上它们是相同的东西。VS Code Analysis是一个针对FxCop引擎的VS集成包装器。它使用MSBuild任务来运行fxcopcmd.exe可执行文件进行分析,而CodeAnalysisAdditionalOptions则插入了命令行选项以进行调用。如果你增加了VS构建输出的详细程度,你就能在VS输出窗口中看到任务生成的完整命令行。 - Nicole Calinoiu
抱歉,我完全忽略了“非托管”部分。我仍然认为它是“PREfast”。我会更新我的答案来涵盖这种情况。 - Nicole Calinoiu
1
嗯...我发誓这在VS2013中也能用...看起来现在不行了。 :-/ - BrainSlugs83
似乎仍然将警告写入“输出”窗口,但它们只是未被错误/警告列表捕获。-- 不确定出了什么问题。 - BrainSlugs83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接