首页 游戏天地文章正文

推荐一款代码规范检查(CodeReview)神器

游戏天地 2025年09月03日 10:31 2 admin

在实际项目开发中,越是复杂的项目,越是需要很多人协同完成,每一个人根据职责分工不同,负责不同的模块。在这个过程中,由于每一个人的工作经历不同,在不同的职场环境中,会形成不同的编码习惯,比如有人喜欢驼峰命名方式,有人喜欢帕斯卡命名方式,还有人喜欢用下划线分隔单词,更有甚者,有的人喜欢随意命名,那在整个项目中如何保持一种编码风格,让每一个人都能快速的看懂其他同事的代码,就显得非常关键。要解决这一个问题,最直接的方法就是代码审查(Code Review),同事之间相互审查对方的代码,以便及时更正,但这也有弊端,比如在项目工期较紧的时候,人工代码审查就会流于形式;同时大家的编程习惯各不相同,也难于形成统一认识。这时候如果能有一款工具,在编程的时候,及时标识出不规范的地方,那将会大大的节约大家的时间,同时也容易形成统一认识,按照既定的规则进行编程。今天我们就以一个简单的小例子,简述如何通过StyleCop.Analyzers实现代码的静态审查,仅供学习分享使用,如有不足之处,还请指正。

推荐一款代码规范检查(CodeReview)神器

什么是StyleCop.Analyzers?

StyleCop.Analyzes是一个C#源码分析工具,用于检测代码样式、质量和可维护性、设计及其他问题。它目前已经包含了200多个最佳实践规则,可以帮助我们更容易的进行代码审查。而且这些实践规则,和 Visual Studio 中默认的代码格式化规则是一致的。它会根据预定义的C#代码格式的最佳实践,对我们的源代码进行检查,并给出不符合编码风格的错误提示。可以帮助团队成员强制执行一组代码样式和一致性规则。

github网址为:

https://github.com/DotNetAnalyzers/StyleCopAnalyzers/

推荐一款代码规范检查(CodeReview)神器

安装

在Visual Studio 2022开发工具中,可以通过Nuget包管理器进行安装。首先创建示例项目Okcoder.StyleCopAnalyzers.Demo解决方案,它包含两个项目,分别为WinForm程序Okcoder.StyleCopAnalyzers.Demo和类库Okcoder.StyleCopAnalyzers.Test。创建成功后,如下图所示:

推荐一款代码规范检查(CodeReview)神器

在项目右键,选择“管理 Nuget程序包...”打开Nuget包管理页面,然后在“浏览”输入“StyleCop.Analyzers”关键字进行搜索。当前最新版本为v1.1.118,如下所示:

推荐一款代码规范检查(CodeReview)神器

可以根据实际情况进行安装,如果有些项目不需要进行代码静态审查,则不需要安装。

分析器和代码提示

StyleCop.Analyzers安装成功后,打开项目Okcoder.StyleCopAnalyzers.Demo的“依赖项”,并在子项中选择“分析器”中,可以看到StyleCop.Analyzers的内容,它主要包含代码静态审查的规则和严重程度设置。如下所示:

推荐一款代码规范检查(CodeReview)神器

这个时候,当我们打开FrmMain页面,可以看到多了很多绿色的波浪线,这是在提示我们它不符合StyleCop.Analyzers的代码审查规则,当鼠标放在绿色波浪线的上方,会提示具体的详细内容,如下所示:

推荐一款代码规范检查(CodeReview)神器

当我们按照StyleCop.Analyzer提示的规则修改后,绿色波浪线会消失,如下所示:

推荐一款代码规范检查(CodeReview)神器

同时经过修改,代码也变得清爽很多。

StyleCop规则说明

StyleCop.Analyzers定义了很多规则,但我们并不需要应用全部的规则,可以根据项目实际需要应用部分规则,它主要定义的规则如下所示:

  • 文档规则:主要包括文档的定义相关规则,如文档说明,接口说明,类说明,属性说明等内容。

  • 缩进规则:主要是采用哪种方式缩进,如tab缩进,空格缩进。

  • 间距规则:主要定义间距。

  • 可读性规则:主要定义代码可读性,如给内置类型设置别名等。

  • 排序规则:主要定义文档中元素之间的排序,如属性,方法等排序规则。

  • 命名规则:主要定义命名规则方式。

  • 可维护性规则:主要定义哪些类型需要定义在单独的文件中,如一个类文件只能包含一个类定义。

  • 布局规则:主要定义代码布局,如do-while的闭合花括号和条件表达式在同一行。

以上是StyleCop.Analyzers定义的主要规则,每一项还包含更详细的规则,具体可以在实际应用中进行查看。

StyleCop规则配置

StyleCop.Analyzers提供了两种规则配置方式,本文主要通过stylecop.json文件进行配置,关于stylecop.json的创建,可以通过在代码警告提示的地方,点击“快速操作和重构”小灯泡按钮,然后点击“Add StyleCop settings file to the project”就可以在项目中添加stylecop.json配置文件,如下所示:

推荐一款代码规范检查(CodeReview)神器

配置完成后,stylecop.json的示例文件如下所示:

{  // ACTION REQUIRED: This file was automatically added to your project, but it  // will not take effect until additional steps are taken to enable it. See the  // following page for additional information:  //  // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md
  "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",  "settings": {    //文档规则    "documentationRules": {      "companyName": "Okcoder", //指定应在版权声明中出现的公司名称      "copyrightText": "Copyright (c) { companyName }. All rights reserved.",      "xmlHeader": true,      "variables": {        "licenseName": "MIT",        "licenseFile": "LICENSE"      },      "headerDecoration": "-----------------------------------------------------------------------",      "documentInterfaces": true,      "documentExposedElements": true,      "documentInternalElements": true,      "documentPrivateElements": false,      "documentPrivateFields": false,      "fileNamingConvention": "stylecop",      "documentationCulture": "en-US",      "excludeFromPunctuationCheck": ["seeaslo"]    },    //缩进规则    "indentation": {      "useTabs": false,      "tabSize": 4,      "indentationSize": 4    },    //间距规则    "spacingRules": {    },    //可读性规则    "readabilityRules": {      //是否运行给内置类型定义别名      "allowBuiltInTypeAliases": false    },    //排序规则    "orderingRules": {      //定义文档中元素排序和优先级 traits:特性      "elementOrder": [ "kind", "accessibility", "constant", "static", "readonly" ],      "systemUsingDirectivesFirst": true,      "usingDirectivesPlacement": "outsideNamespace",      "blankLinesBetweenUsingGroups": "allow"    },    //命名规则    "namingRules": {      //允许使用常见的匈牙利语前缀      "allowCommonHungarianPrefixes": true,      "allowedHungarianPrefixes": [ "cd", "md" ],      "allowedNamespaceComponents": [ "" ],      "includeInferredTupleElementNames": false, //是否需要触发推断出的元组名进行分析      "tupleElementNameCasing": "PascalCase" // 元组命名方式,Pascal方式    },    //可维护性规则    "maintainabilityRules": {      //定义哪些类型需要在单独的文件中      "topLevelTypes": [ "class", "interface", "enum", "delegate", "struct" ]    },    "layoutRules": {      "allowConsecutiveUsings": true, //允许使用连续无花括号的语句      "allowDoWhileOnClosingBrace": false, //是否允许do while 的条件表达式和闭合括号在同一行      "newlineAtEndOfFile": "allow" // 文件结尾是否允许出现新行标识符    }  }}

配置规则共享

在实际应用中,我们不止有一个项目,如果需要在多个项目中应用同一套代码审查规则,可以将stylecop.json文件复制到公共目录,如解决方案文件夹,如下所示:

推荐一款代码规范检查(CodeReview)神器

在需要添加的项目中,右键编辑项目文件,然后在项目文件中添加如下代码,将共享规则文件链接到项目中,如下所示:

ItemGroup>    AdditionalFiles Include="..\stylecop.json" Link="stylecop.json" />ItemGroup>

添加后项目文件如下所示:

推荐一款代码规范检查(CodeReview)神器

并且在一个地方修改stylecop.json文件,会同时生效,因为两个项目都是链接的同一个json文件。在项目中如下所示:

推荐一款代码规范检查(CodeReview)神器

以上就是《推荐一款代码规范检查(CodeReview)神器》的全部内容 ,关于更多详细内容,可参考官方文档。 希望能够一起学习,共同进步。

推荐一款代码规范检查(CodeReview)神器推荐一款代码规范检查(CodeReview)神器

发表评论

泰日号Copyright Your WebSite.Some Rights Reserved. 网站地图 备案号:川ICP备66666666号 Z-BlogPHP强力驱动