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 中没有名称(但“官方”规则有名称)