StyleCop(C#代码检测工具)

一、StyleCop是微软的一个开源的静态代码分析工具,检查c#代码一致性和编码风格。

二、下载地址   http://stylecop.codeplex.com/releases/view/79972

  默认安装目录:C:\Program Files (x86)\StyleCop 4.7

  自己定义的dll规则也放在这个目录下

三、使用方式:打开VS之后选择一个类或者一个类库右击

RunStyleCop运行结果:

四:编写自己的规则:

1、创建一个类库,

  新建一个MyCustomAnalyzer.cs文件,引用StyleCop.dll和StyleCop.Csharp.dll

  代码如下:

using StyleCop;
using StyleCop.CSharp;  

namespace MyCustomRules
{
    /// <summary>
    /// Custom analyzer for demo purposes.
    /// </summary>
    [SourceAnalyzer(typeof(CsParser))]
    public class MyCustomAnalyzer : SourceAnalyzer
    {
        /// <summary>
        /// Extremely simple analyzer for demo purposes.
        /// </summary>
        public override void AnalyzeDocument(CodeDocument document)
        {
            CsDocument doc = (CsDocument)document;  

            // skipping wrong or auto-generated documents
            if (doc.RootElement == null || doc.RootElement.Generated)
                return;  

            // check all class entries
            doc.WalkDocument(CheckClasses);
        }  

        /// <summary>
        /// Checks whether specified element conforms custom rule CR0001.
        /// </summary>
        private bool CheckClasses(
            CsElement element,
            CsElement parentElement,
            object context)
        {
            // if current element is not a class then continue walking
            if (element.ElementType != ElementType.Class)
                return true;  

            // check whether class name contains "a" letter
            Class classElement = (Class)element;
            if (classElement.Declaration.Name.Contains("a"))
            {
                // add violation
                // (note how custom message arguments could be used)
                AddViolation(
                    classElement,
                    classElement.Location,
                    "AvoidUsingAInClassNames",
                    classElement.FriendlyTypeText);
            }  

            // continue walking in order to find all classes in file
            return true;
        }
    }  

}  
AddViolation方法中的三个参数"AvoidUsingAInClassNames"是自己定义的规则,这个规则就是下文xml中的 Rule Name="AvoidUsingAInClassNames"

2、新建一个和类同名的xml文件

  MyCustomAnalyzer.xml内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<SourceAnalyzer Name="My Custom Rule">
    <Description>
        Custom rule for demo purposes.
    </Description>
    <Rules>
        <Rule Name="AvoidUsingAInClassNames" CheckId="CR0001">
            <Context>不能用A字母</Context>
            <Description>Fires when ‘a‘ letter is used in class name.</Description>
        </Rule>
    </Rules>
</SourceAnalyzer>  

  设置该xml文件属性:编译方式为嵌入式 (即编译到dll中),Rules中可以放多个Rule但不要忘了改Name和Id

3、保存并编译

  将这个项目生成DLL,把MyCustomAnalyzer.dll放到StyleCop根目录下。到此自定义规则就完成了。

4、使用自己的规则:

  打开VS之后选择一个类或者一个类库右击,选择 StyleCop Settings设置规则,这里可以看到自己新添的规则。

时间: 2024-12-17 03:57:14

StyleCop(C#代码检测工具)的相关文章

eslint 代码检测工具

jshint 检测工具不够灵活下,道格拉斯(何许人也?json创造者,javascript重要任务,犀牛那本书就是他写的). 文档地址: 中文地址 English 安装 利用npm全局安装eslint和pre-commit .建议这两个全局安装,可能别人检测代码工具不一样,尤其webstrom是自带检测代码功能. npm i -g eslint pre-commit pre-commit,在git commit提交代码的时候,希望能够执行代码检测,不要把错误的代码上传到项目仓库(说直白点,谁写的

c++代码检测工具

cppcheck是一款静态代码检查工具,可以检查如内存泄漏等代码错误,使用起来比较简单,即提供GUI界面操作,也可以与VS开发工具结合使用. 1.安装 一般会提供免安装版,安装完成后将cppcheck.exe所在目录添加到环境变量中,这样cmd下可直接使用cppcheck指令来检测代码. 2.cppcheck的检查信息 error:代码中的错误项,包括内存泄漏等: warning:为了避免产生bug而提供的编程改进意见: style:编码风格,提示你哪些函数没有使用.哪些为多余代码等: port

Converity与一款国产代码检测工具的对比

源伞科技Pinpoint,作为BAT都在使用的一款静态代码分析工具,到底有什么领先于其他厂商的能力? 1. 扩展和部署功能对比 源伞科技Pinpoint现有的检查器可以通过简单的json配置文件扩展业务逻辑.比如敏感数据泄露到日志检查器,企业或许有很多自己的日志打印函数,我们可以通过人工配置指定,即可提高检测质量. 如果不想人工配置,Pinpoint有未公开发布的库函数学习工具,可以通过线下分析企业代码库自动学习和生成上述配置文件. Pinpoint对分布式多机扫描部署支持比Coverity好,

Java代码检测工具

开发软件时,我的主要目标之一是:要么防止将缺陷引入代码库,要么限制缺陷的生存期:换言之,要尽早找到缺陷.很显然,越是了解如何编写更好的代码以及如何有效测试软件,就越能及早地捕捉到缺陷.我也很想要一张能发现潜在缺陷的安全之网. 得出了这样的结论:将检验工具集成到构建过程(例如,使用 Ant 或 Maven)中,能够建立起一种寻找潜在缺陷的方法.尽管这种方法使一致性成为可能并超越了 IDE,但它也有一点反作用.必须在本地构建软件或等待 Continuous Integration 构建的运行.如果使

代码检测工具

flake8 flake8:用于检测代码中不符合规范的地方 安装:pip install flake8 手动代码检测:flake8 xxx.py或者文件夹 自动检测代码 # 创建配置文件.flake8 填写[flake8] # 文件中有它就会自动检测代码 配置相关 ignore = E225 # 忽略E225这个规范 except = xxx # 检测时将这些文件排除在外,不进行检测 原文地址:https://www.cnblogs.com/liuweida/p/11769706.html

vim的python代码检测工具

这里介绍三个vim的插件, 一个是pyflakes,另外一个是pep8,还有它们的合体flake8 安装 安装很简单,找到你的.vim目录,把这两个压缩包解压了放进去 去下面vim官方下下来. pyflakes http://www.vim.org/scripts/script.php?script_id=2441 pep8 http://www.vim.org/scripts/script.php?script_id=2914 flake8 http://www.vim.org/scripts

阿里java代码检测工具p3c

阿里在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.这个项目组是阿里巴巴开发爱好者自发组织形成的虚拟项目组,把<阿里巴巴Java开发规约>强制条目转化成自动化插件,并实现部分的自动编程.插件的下载地址:https://github.com/alibaba/p3c 或者在Github直接搜索p3c插件有哪些功能?为了让开发者更加方便.快速将规范推动并实行起来,阿里基于手册内容,研发了一套自动化的IDE检测插件(IDEA.Ec

Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果

为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 首先看,最终效果: 1.pom.xml build.plugins 增加: <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <ph

NodeJs代码扫描工具ESLint

目录 简介 安装 初始化 检测规则 范例 参考文章 简介 ESLint是一个用来识别 ECMAScript 并且按照规则给出报告的代码检测工具,使用它可以避免低级错误和统一代码的风格.如果每次在代码提交之前都进行一次eslint代码检查,就不会因为某个字段未定义为undefined或null这样的错误而导致服务崩溃,可以有效的控制项目代码的质量. 在许多方面,它和 JSLint.JSHint 相似,除了少数的例外: ESLint 使用 Espree 解析 JavaScript. ESLint 使