如何自定义代码分析(StypeCop)规则
代码质量检查是增强代码可维护性,增加软件生命周期的一个很重要的环节,而人为的进行代码质量检查,势必会花费很多的时间,所以代码机检是一个很好的选择。我们选择了VS2010自带的代码分析插件——StyleCop,进行基本的介绍,本文主要介绍如何自定义相应的规则,并进行部署。
组织使用StyleCop拥有的规则
勾选所需的规则后,保存即可。
进行代码分析
自定义StyleCop规则
老外的文章基本上讲解的很清楚了,地址如下:
首先要引用FxCopSdk.dll以及Microsoft.Cci.dll,这2个dll在VS2010安装目录下:Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop,由于不知道当前的安装目录,所以需要打开项目文件.csproj,<ItemGroup>节点下加入下面这段,重新打开项目即可。
<Reference Include="FxCopSdk"> <HintPath>$(CodeAnalysisPath)\FxCopSdk.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="Microsoft.Cci"> <HintPath>$(CodeAnalysisPath)\Microsoft.Cci.dll</HintPath> <Private>False</Private> </Reference>
自定义规则需要从 BaseIntrospectionRule 继承,同时需要一个规则元数据文件 RuleMetadata.xml(随便命名),必须为嵌入型资源,初始化的时候将文件名传给积累即可
protected BaseFxCopRule(string ruleName) : base(ruleName, "MyCustomRules.RuleMetadata", typeof(BaseFxCopRule).Assembly) { }
代码中只需要重载函数public override ProblemCollection Check(Member member),
将检查逻辑写于此处,若有问题的,加入Problems集合即可。
调试
需要先设置一些调试启动信息。
在启动外部程序,填入D:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\FxCopCmd.exe(注意是Microsoft Visual Studio 10.0的安装路径,下面不单独说明)
命令行参数填入/out:"results.xml" /file:"MyCustomRules.dll" /rule:"MyCustomRules.dll" /D:"D:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop"
工作目录填入本项目生成目录E:\develop\c#\MyCustomRules\MyCustomRules\bin\Debug
F5调试
部署自定义StyleCop规则
将编译生成的dll覆盖到Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\Rules 目录下,重新打开代码分析规则,看到已经有我们自定义的规则了。
源代码以检查方法行数为例,源码示例:http://files.cnblogs.com/zhangyida/MyCustomRules.rar