使用Visual Studio代码分析规则1804进行Bizzare行为

时间:2015-11-10 09:33:44

标签: visual-studio code-analysis fxcop

我们正在使用Visual Studio Code Analysis Rules进行代码质量检查。我们已经创建了自定义.ruleset文件并将某些违规行为标记为Errors,因此每当有人违反这些规则时,他都会收到编译错误并且必须解决问题。

现在一切都在debug模式下正常运行,但是当我在release模式下构建项目时,我没有收到规则1804 i.e. Remove unused locals的任何错误。事实上,违规列表中完全没有违规行为,甚至没有警告!!

知道需要构建配置集来运行代码分析规则,我已经为项目属性中的所有配置启用了代码分析,如下所示 - **enter image description here** 这样做对所有其他规则都有效,但是1804。

这似乎是代码分析的一个错误,或者由于某些我不知道的原因它是一个有效的行为,并且有什么可以让它发挥作用吗?

我正在使用Visual Studio 2013

1 个答案:

答案 0 :(得分:2)

这并不像你想象的那么奇怪。 FxCop作用于二进制文件,而不是源文件。在发布模式下,编译器将应用优化,例如删除未使用的本地,简化if / else语句以及导致相同执行但具有更高性能或更低内存使用率的其他事项。

在优化了这些代码之后,FxCop将无法检测到它。

这就是对非优化二进制文件进行二进制分析最有意义的原因。

使用Visual Studio 2015,大部分分析已移至Roslyn Analyzers,它将通过分析源代码而不是二进制输出来捕获这些问题。这将允许代码分析(在2015年)检测这些问题,即使它们没有进入最终的二进制文件。