VS2010 自定义代码分析规则

Posted

技术标签:

【中文标题】VS2010 自定义代码分析规则【英文标题】:VS2010 Custom Code Analysis Rule 【发布时间】:2010-03-17 15:59:03 【问题描述】:

我正在尝试为 mstest 项目 VS2010 编写自定义 fxcop 规则。我想调试它,但是当它尝试为 mstest 项目加载 dll 时不断收到异常,它失败了,说明它找不到引用的程序集:



  
   Microsoft.FxCop.Common.AssemblyLoadException
   Could not load C:\Users\Administrator\Documents\Visual Studio 2010\Projects\20100106-CodeAnalysisRulesBlogDemo\BlogDemo\TestProject1\bin\Debug\TestProject1.dll.
   Microsoft.FxCop.Sdk.InvalidMetadataException
   The following error was encountered while reading module 'TestProject1': Assembly reference cannot be resolved: Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

有人知道如何解决这个问题吗?如果我只是运行代码分析,它可以正常工作,但一旦我尝试调试它就会失败。

谢谢

【问题讨论】:

【参考方案1】:

您可以使用 /d 选项指定在程序集解析期间要搜索的其他目录。

代码分析不会自动从项目设置中获取程序集,除非您已将它们全部设置为 Copy-local。

【讨论】:

【参考方案2】:

编写 FxCop 规则的混乱的替代方法是使用工具 NDepend。这个工具可以让 C# LINQ 查询上的代码规则 what we call CQLinq。 免责声明:我是该工具的开发人员之一

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

CQLinq 查询可以在 VisualStudio 中实时编辑,并提供即时结果,并带有结果浏览功能:

可以在live in Visual Studio 和构建过程中验证规则,在generated html+javascript report 中。

【讨论】:

以上是关于VS2010 自定义代码分析规则的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VS2010 Professional 中为 C# 项目自定义代码分析字典?

FxCop 自定义规则在 VS2012 中没有名称(但“官方”规则有名称)

是否可以在没有 tfs 服务器的情况下验证 vs2010 中的自定义代码/架构规则?

可视化 StyleCop 和代码分析规则违规

使用 FxCop 获得百分比代码覆盖率

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