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的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在未安装 VS 的情况下从 MSBuild 命令行运行 FxCop 代码分析?
FxCop(/VS2010 代码分析),可以将方法结果标记为 IDisposable 的“现在调用者责任”吗?