VS2008中的代码分析/FxCop

Posted

技术标签:

【中文标题】VS2008中的代码分析/FxCop【英文标题】:Code analysis/FxCop in VS2008 【发布时间】:2008-12-18 08:51:45 【问题描述】:

FxCops 对我来说是新事物,但我一如既往地想了解新事物.. 根据我的阅读,FxCops 已经包含在 VS2008 中。我猜这是“代码分析”功能。每当我尝试运行它时,它似乎开始重建并以“完成重建”状态结束。 我检查了输出窗口,那里有一堆警告。但是,如果我没记错的话,应该有更多的 GUI,然后是我的输出窗口中的文本墙,对吧? 我错过了应该弹出的窗口吗?我可以在某个地方打开它吗?还是我还缺少什么?

【问题讨论】:

【参考方案1】:

是的,代码分析是 FxCop 的友好名称。但是,我不知道错误/警告列表之外的友好窗口应该出现在哪里,前缀为CA

在项目属性屏幕上有一个代码分析选项卡,您可以在其中将警告视为错误以执行您关心的规则。

【讨论】:

我明白了,我没有注意“警告”选项卡,因为它通常只散落着“缺少 css 类”。这是一个非功能性警告(VS 没有找到一半的 CSS 文件,而且并非所有类都适用于 CSS) 我也觉得这很烦人,但是,如果您有纯粹用于标记 html 而非样式的 css 类,为什么不添加一个空的 CSS 规则(在注释为解释规则为空的原因)【参考方案2】:

你没有错过任何东西 - 没有弹出窗口。

输出窗口中的问题列表几乎就是您在 FxCop 中所能获得的全部内容。只是 FxCop 是一个独立的应用程序。

这是一篇关于 FxCop 和代码分析的不错的文章:

http://geekswithblogs.net/sdorman/archive/2008/08/19/visual-studio-and-code-analysis.aspx

【讨论】:

【参考方案3】:

大家都知道,因为我花了很长时间才弄明白......代码分析/FxCop 仅包含在 VS 2008 的 Team System 和 Team Suite 版本中,不包含在专业版中。

【讨论】:

感谢 Avram,我能够找到 FxCop 的 1.36 版作为独立应用程序。仔细搜索,人们,因为测试版实际上在 Google 结果中显示得更高。【参考方案4】:

FxCop 的替代方法是使用 NDepend 工具,它可以编写Code Rules over C# LINQ Queries (namely CQLinq)。 NDepend 已集成在 VS 2012、2010 和 2008 中。免责声明:我是该工具的开发人员之一

默认建议超过200 code rules。得益于众所周知的 C# LINQ 语法,自定义现有规则或创建自己的规则非常简单。

NDepend 代码规则可以在 live in Visual Studio 和构建过程中验证 generated HTML+javascript report。

您似乎担心误报的数量。为了保持低误报的数量,CQLinq 提供了独特的功能,通过以 notmycode 为前缀的特殊代码查询来定义集合 JustMyCode 是什么。有关此功能的更多说明,请参见 here。下面是例如两个 notmycode 默认查询:

Discard generated and designer Methods from JustMyCode Discard generated Types from JustMyCode

为了保持低误报的数量,您还可以使用 CQLinq 将规则结果集中在添加的代码或重构的代码上,因为定义了 baseline in the past。请参阅以下规则,该规则检测自基线以来添加或重构的过于复杂的方法:

warnif count > 0 
from m in Methods
where m.CyclomaticComplexity > 20 &&
      m.WasAdded() || m.CodeWasChanged()
select new  m, m.CyclomaticComplexity 

【讨论】:

听起来很有趣。可能会向我的老板推荐这个

以上是关于VS2008中的代码分析/FxCop的主要内容,如果未能解决你的问题,请参考以下文章

VS2012 与 Fxcop 中的代码分析

如何编写代码分析 (FxCop) 规则以防止方法调用

是否可以在未安装 VS 的情况下从 MSBuild 命令行运行 FxCop 代码分析?

FxCop(/VS2010 代码分析),可以将方法结果标记为 IDisposable 的“现在调用者责任”吗?

我们如何在 FxCop 10 Standalone 中使用 VS2012 静态分析规则

如何在 Visual Studio 2008 中禁用 XAML 文件的“代码分析”?