StyleCop 代码审查(VS插件)

2023-11-05

代码审查:StyleCop  (介绍,下载,使用,自定义规则,源码)
StyleCop简介:
StyleCop是代码规范检查工具(Code Review 工具),它不仅仅检查代码格式,而是编码规范,包括命名和注释等。StyleCop可以帮助你更容易地进行这项活动。StyleCop现在包含了 200 个左右的最佳实践规则(best practice rules),这些规则与 Visual Studio 2005 和 Visual Studio 2008 中默认的代码格式化规则是一致的。它会根据预定义的C#代码格式的最佳实践,对我们的源代码进行检查,并给出不符合编码风格的错误提示。这一点来说与微软的另一个代码检查工具 FxCop 很相似,但 FxCop 是对 dll (compiled binaries) 进行检查,所以 FxCop 适用于新项目通过持续集成工具来使用的情况。也就是说 FxCop 是项目级别的,而 StyleCop是代码级别的,更适合于程序员在编程过程中使用。
StyleCop检查的常用规则:
Documentation Rules 文档规则
Layout Rules 布局规则
Maintainability Rules 可维护性规则
Naming Rules 命名规则
Ordering Rules 代码顺序规则
Readability Rules 可读性规则

Spacing Rules 间距规则

关于规则的解读:

http://blog.csdn.net/zzh920625/article/details/51637793

StyleCop下载地址:

http://stylecop.codeplex.com/releases/view/621306


StyleCop自定义规则:

1.vs-创建-类库
2.vs-创建-类
3.vs-创建-xml文件
4.vs-将项目生成dll文件
5.vs-将生成的dll文件放在StyleCop安装的根目录下就OK
注意:
1.目标框架(.NET Framework 3.5)可忽略
2.创建的类名与xml文件名相同

3.需要引用using StyleCop;using StyleCop.CSharp;

4.xml文件,属性,生成操作,选择嵌入的资源

StyleCop自定义规则案例:
类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using StyleCop;
using StyleCop.CSharp;

namespace 方法名首字母大写Rules
{
    [SourceAnalyzer(typeof(CsParser))]
    public class CustomAnalyzer : SourceAnalyzer
    {
        public override void AnalyzeDocument(CodeDocument document)
        {
            CsDocument doc = (CsDocument)document;

            if (doc.RootElement == null || doc.RootElement.Generated) return;
            doc.WalkDocument(CheckClasses);
        }
        private bool CheckClasses(CsElement element, CsElement parentElement, object context)
        {
            if (element.ElementType != ElementType.Method) return true;
            Method methodElement = (Method)element;
            string firstLetter = methodElement.Declaration.Name.Substring(0, 1);
            if (firstLetter.ToUpper().Equals(firstLetter) == false)
            {
                AddViolation(methodElement, methodElement.Location, "MethodBighumpNames", methodElement.FriendlyTypeText);
            }
            return true;
        }
    }
}
xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<SourceAnalyzer Name="方法名首字母大写 Rules">
  <Description>
    方法名首字母大写 Rules.
  </Description>
  <Rules>
    <Rule Name="MethodBighumpNames" CheckId="CR0001">
      <Context>方法名必须以大写字母开始</Context>
      <Description>Public method must begin with upper case letter.</Description>
    </Rule>
  </Rules>
</SourceAnalyzer>

StyleCop警告提示变为错误提示:

StyleCop4.7

1.在安装StyleCop的是候有一个MSBuild integration的选项,它默认是不安装的,所以安装的时候记得选择(*默认路径C:\Program Files (x86)\StyleCop 4.7)

2.安装之后:C:\Program Files (x86)\MSBuild\StyleCop\v4.7 的文件夹下会有一个StyleCop.Targets文件,打开文件将里面的字节<UsingTask>一行

改为<UsingTask AssemblyFile="StyleCop.dll" TaskName="StyleCopTask"/>保存

3.配置你的项目,打开你的项目目录,其中会有一个.csproj文件,使用记事本之类的工具打开,在第一个PropertyGroup 节末端添加

<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>

在<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />后面添加<Import Project="$(ProgramFiles)\MSBuild\StyleCop\v4.7\StyleCop.targets" />

4.重新打开项目

注意:

如果不是StyleCop4.7版本的,默认安装路径可能会不同,StyleCop.Targets文件名及路径也会不同,所以<Import>节中的路径要改


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

StyleCop 代码审查(VS插件) 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 【十三】Nacos 服务注册和配置中心

    目录 Nacos 初识 Nacos 服务部署 注册中心服务部署 服务提供者注册到Nacos 服务消费者从Nacos获取服务 负载均衡 Nacos 服务详解 实列服务详情详解 Nacos 初识 Nacos Dynamic Naming and
  • Android 输入框的输入提示效果(AutoCompleteTextView)

    在一些体验较好的APP中 输入框输入时会有相应的提示 让人能够很快的通过点击提示进入下一步 这里 我就通过自己构思 实现了一个通过 SharedPreferences 保存的输入提示 demo 实现 1 实现一个 SharedPrefere
  • opencv项目实战(二)——文档扫描OCR识别

    一 项目描述 二 代码详解 2 1 预定义参数 2 2 辅助函数 2 3 文档矫正 2 4 文档识别 三 项目完整代码 一 项目描述 目的 将图片中的文档矫正 并识别文档内容 输入与输出 方法流程 核心思想 采用tesseract ocr进
  • 前端在vue2框架中导出PDF

    1 需求 导出具有页眉页脚 页码的Pdf 并且解决Pdf分割的问题 2 实现思路 该需求主要的难点在于分页的时候容易出现分割问题 并且要将页眉页脚加进去 实现的大概思路 1 先使用jsPDF html2canvas将页面可以导出 2 第一页
  • PHP 8突破性变化

    新的PHP首要版别PHP8估计将于2020年底发布 它现在正处于十分活泼的开发中 所以在接下来的几个月里 开发速度和开发进程或许会有很大的改动 在这篇文章中 我会罗列出PHP8中会发作的一些改动 新功能 性能改善和突破性改动 由于PHP8是
  • redis 二. string 应用场景及底层分析

    String 字符串类型 一 简单命令示例 二 java 操作示例 基础 setnx 与 getset 三 使用场景举例 统计点击次数 四 底层分析 SDS 嵌入式动态字符串 再次总结 一 简单命令示例 String字符串类型 一个key对
  • Netty入门详解

    Netty是什么 Netty是 一个异步事件驱动的网络应用程序框架 用于快速开发可维护的高性能协议服务器和客户端 本质 网络应用程序框架 实现 异步 事件驱动 特性 高性能 可维护 快速开发 重要的类 方法解析 EventLoop Even
  • B站最全:给小白的Python入门教程

    如今绝大多数互联网公司 谷歌 腾讯 阿里 百度 知乎等 的很多职位要求应聘者必须具有 Python技能 学会了 Python 等于手握他们的敲门砖 0 编码基础的你 学会 Python 以后 你一个人可以做五个人的工作 最主要的是下班早 月
  • JAVA内部类

    内部类是一种类的结果扩充 一个类的内部除了属性和方法外 还可以存在其他类的结构 并且内部类也可以定义在方法或代码块中 基本概念 所谓的内部类指的就是在一个类的内部继续定义其他内部结构类 观察内部类的基本形式 package oop 观察内部
  • 服务器更换系统教程视频,更换服务器教程视频

    更换服务器教程视频 内容精选 换一换 本节操作介绍如何在移动设备上连接Linux实例 以iTerminal SSH Telnet为例介绍如何在iOS设备上连接 Linux 实例 详细操作请参考IOS设备上登录Linux云服务器 以Juice
  • vue调用视频播放插件

    安装依赖 npm install vue video player S 引入配置 import VideoPlayer from vue video player require video js dist video js css req
  • 如何直接关闭使用3306端口的进程

    要直接关闭使用3306端口的进程 你可以按照以下步骤进行操作 以关闭占领3306端口MySQL服务为例 获取占用3306端口的进程ID PID 在终端中执行以下命令 sudo lsof i 3306 查找输出中的进程ID PID 列 以及它
  • shell IF条件判断,判断条件

    http hi baidu com ryouaki item 0689dcb8a467b5a7eaba9319 前言 无论什么编程语言都离不开条件判断 SHELL也不例外 if list then do something here eli
  • k8s笔记17--ubuntu & k8s 开启 swap功能

    k8s笔记17 k8s 中途开启 swap功能 1 介绍 2 方法 2 1 ubuntu 开启swap 2 2 k8s 开启swap 3 说明 1 介绍 swap 功能是 linux是一个非常强大的功能 类似于windows的虚拟内存 当内
  • 【vue3+elementPlus】在el-table中使用popconfirm、popover、tooltip、select时,出现placement错位或者框被table的列遮挡的解决方案

    首先 第一种情况 项目设置了zoom 会导致el popconfirm el popover el tooltip el select位置不对 解决方案 temported false 给以上标签加该属性 意思是不插入body el pop
  • 一文读懂Uniswap V2的改进与创新

    Uniswap V2是链上交易所的下一个迭代产品 Uniswap是Ethereum区块链上的一个链上流动性协议 它可以实现无信任的代币交换 这意味着所有的交易都是由智能合约执行的 而不需要中介或受信任方 这种去中心化的交换代币的方法已经被证
  • Springboot2(27)集成netty实现反向代理(内网穿透)

    源码地址 springboot2教程系列 其它netty文件有博客 Springboot2 24 集成netty实现http服务 类似SpingMvc的contoller层实现 Springboot2 25 集成netty实现文件传输 Sp
  • 关于libc.so.6误删除紧急恢复的方案

    编者在一次实际生产下不小心将 libc so 6 变成了libc so 6 bak 当时没有发觉有什么不妥 但是在后面的时候 发现很多命令都无法使用 为了以后方便解决 所以将解决的方法记录 root用户下产生的libc so 6问题解决方法
  • ES6中Fetch的封装及使用,炒鸡简单~

    1 封装 http js class Ajax get url return new Promise resolve reject gt fetch url then res gt res json then data gt resolve
  • StyleCop 代码审查(VS插件)

    代码审查 StyleCop 介绍 下载 使用 自定义规则 源码 StyleCop简介 StyleCop是代码规范检查工具 Code Review 工具 它不仅仅检查代码格式 而是编码规范 包括命名和注释等 StyleCop可以帮助你更容易地