如何自定义代码分析(StypeCop)规则

       代码质量检查是增强代码可维护性,增加软件生命周期的一个很重要的环节,而人为的进行代码质量检查,势必会花费很多的时间,所以代码机检是一个很好的选择。我们选择了VS2010自带的代码分析插件——StyleCop,进行基本的介绍,本文主要介绍如何自定义相应的规则,并进行部署。

 

组织使用StyleCop拥有的规则

          如何自定义代码分析(StypeCop)规则

 

勾选所需的规则后,保存即可。

 如何自定义代码分析(StypeCop)规则

进行代码分析

如何自定义代码分析(StypeCop)规则

自定义StyleCop规则

       老外的文章基本上讲解的很清楚了,地址如下:

http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx

 

       首先要引用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

 如何自定义代码分析(StypeCop)规则

       F5调试

 如何自定义代码分析(StypeCop)规则

 

 

部署自定义StyleCop规则

 

       将编译生成的dll覆盖到Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\Rules 目录下,重新打开代码分析规则,看到已经有我们自定义的规则了。

 如何自定义代码分析(StypeCop)规则

 

源代码以检查方法行数为例,源码示例:http://files.cnblogs.com/zhangyida/MyCustomRules.rar

posted on 2013-07-16 10:08 张益达2013 阅读(...) 评论(...) 编辑 收藏