小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

推薦一款代碼規(guī)范檢查(CodeReview)神器

 老碼識途 2025-08-28 發(fā)布于廣東

在實際項目開發(fā)中,越是復(fù)雜的項目,越是需要很多人協(xié)同完成,每一個人根據(jù)職責分工不同,負責不同的模塊。在這個過程中,由于每一個人的工作經(jīng)歷不同,在不同的職場環(huán)境中,會形成不同的編碼習慣,比如有人喜歡駝峰命名方式,有人喜歡帕斯卡命名方式,還有人喜歡用下劃線分隔單詞,更有甚者,有的人喜歡隨意命名,那在整個項目中如何保持一種編碼風格,讓每一個人都能快速的看懂其他同事的代碼,就顯得非常關(guān)鍵。要解決這一個問題,最直接的方法就是代碼審查(Code Review),同事之間相互審查對方的代碼,以便及時更正,但這也有弊端,比如在項目工期較緊的時候,人工代碼審查就會流于形式;同時大家的編程習慣各不相同,也難于形成統(tǒng)一認識。這時候如果能有一款工具,在編程的時候,及時標識出不規(guī)范的地方,那將會大大的節(jié)約大家的時間,同時也容易形成統(tǒng)一認識,按照既定的規(guī)則進行編程。今天我們就以一個簡單的小例子,簡述如何通過StyleCop.Analyzers實現(xiàn)代碼的靜態(tài)審查,僅供學習分享使用,如有不足之處,還請指正。

什么是StyleCop.Analyzers?


StyleCop.Analyzes是一個C#源碼分析工具,用于檢測代碼樣式、質(zhì)量和可維護性、設(shè)計及其他問題。它目前已經(jīng)包含了200多個最佳實踐規(guī)則,可以幫助我們更容易的進行代碼審查。而且這些實踐規(guī)則,和 Visual Studio 中默認的代碼格式化規(guī)則是一致的。它會根據(jù)預(yù)定義的C#代碼格式的最佳實踐,對我們的源代碼進行檢查,并給出不符合編碼風格的錯誤提示??梢詭椭鷪F隊成員強制執(zhí)行一組代碼樣式和一致性規(guī)則。
github網(wǎng)址為:
https://github.com/DotNetAnalyzers/StyleCopAnalyzers/

image

安裝


在Visual Studio 2022開發(fā)工具中,可以通過Nuget包管理器進行安裝。首先創(chuàng)建示例項目Okcoder.StyleCopAnalyzers.Demo解決方案,它包含兩個項目,分別為WinForm程序Okcoder.StyleCopAnalyzers.Demo和類庫Okcoder.StyleCopAnalyzers.Test。創(chuàng)建成功后,如下圖所示:

image

在項目右鍵,選擇“管理 Nuget程序包...”打開Nuget包管理頁面,然后在“瀏覽”輸入“StyleCop.Analyzers”關(guān)鍵字進行搜索。當前最新版本為v1.1.118,如下所示:

image
可以根據(jù)實際情況進行安裝,如果有些項目不需要進行代碼靜態(tài)審查,則不需要安裝。

分析器和代碼提示



StyleCop.Analyzers安裝成功后,打開項目Okcoder.StyleCopAnalyzers.Demo的“依賴項”,并在子項中選擇“分析器”中,可以看到StyleCop.Analyzers的內(nèi)容,它主要包含代碼靜態(tài)審查的規(guī)則和嚴重程度設(shè)置。如下所示:
image

這個時候,當我們打開FrmMain頁面,可以看到多了很多綠色的波浪線,這是在提示我們它不符合StyleCop.Analyzers的代碼審查規(guī)則,當鼠標放在綠色波浪線的上方,會提示具體的詳細內(nèi)容,如下所示:

image

當我們按照StyleCop.Analyzer提示的規(guī)則修改后,綠色波浪線會消失,如下所示:
image
同時經(jīng)過修改,代碼也變得清爽很多。

StyleCop規(guī)則說明


StyleCop.Analyzers定義了很多規(guī)則,但我們并不需要應(yīng)用全部的規(guī)則,可以根據(jù)項目實際需要應(yīng)用部分規(guī)則,它主要定義的規(guī)則如下所示:
  • 文檔規(guī)則:主要包括文檔的定義相關(guān)規(guī)則,如文檔說明,接口說明,類說明,屬性說明等內(nèi)容。
  • 縮進規(guī)則:主要是采用哪種方式縮進,如tab縮進,空格縮進。
  • 間距規(guī)則:主要定義間距。
  • 可讀性規(guī)則:主要定義代碼可讀性,如給內(nèi)置類型設(shè)置別名等。
  • 排序規(guī)則:主要定義文檔中元素之間的排序,如屬性,方法等排序規(guī)則。
  • 命名規(guī)則:主要定義命名規(guī)則方式。
  • 可維護性規(guī)則:主要定義哪些類型需要定義在單獨的文件中,如一個類文件只能包含一個類定義。
  • 布局規(guī)則:主要定義代碼布局,如do-while的閉合花括號和條件表達式在同一行。

以上是StyleCop.Analyzers定義的主要規(guī)則,每一項還包含更詳細的規(guī)則,具體可以在實際應(yīng)用中進行查看。

StyleCop規(guī)則配置


StyleCop.Analyzers提供了兩種規(guī)則配置方式,本文主要通過stylecop.json文件進行配置,關(guān)于stylecop.json的創(chuàng)建,可以通過在代碼警告提示的地方,點擊“快速操作和重構(gòu)”小燈泡按鈕,然后點擊“Add StyleCop settings file to the project”就可以在項目中添加stylecop.json配置文件,如下所示:

image

配置完成后,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./DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",  "settings": {    //文檔規(guī)則    "documentationRules": {      "companyName""Okcoder"//指定應(yīng)在版權(quán)聲明中出現(xiàn)的公司名稱      "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"]    },    //縮進規(guī)則    "indentation": {      "useTabs"false,      "tabSize"4,      "indentationSize"4    },    //間距規(guī)則    "spacingRules": {    },    //可讀性規(guī)則    "readabilityRules": {      //是否運行給內(nèi)置類型定義別名      "allowBuiltInTypeAliases"false    },    //排序規(guī)則    "orderingRules": {      //定義文檔中元素排序和優(yōu)先級 traits:特性      "elementOrder": [ "kind""accessibility""constant""static""readonly" ],      "systemUsingDirectivesFirst"true,      "usingDirectivesPlacement""outsideNamespace",      "blankLinesBetweenUsingGroups""allow"    },    //命名規(guī)則    "namingRules": {      //允許使用常見的匈牙利語前綴      "allowCommonHungarianPrefixes"true,      "allowedHungarianPrefixes": [ "cd""md" ],      "allowedNamespaceComponents": [ "" ],      "includeInferredTupleElementNames"false//是否需要觸發(fā)推斷出的元組名進行分析      "tupleElementNameCasing""PascalCase" // 元組命名方式,Pascal方式    },    //可維護性規(guī)則    "maintainabilityRules": {      //定義哪些類型需要在單獨的文件中      "topLevelTypes": [ "class""interface""enum""delegate""struct" ]    },    "layoutRules": {      "allowConsecutiveUsings"true//允許使用連續(xù)無花括號的語句      "allowDoWhileOnClosingBrace"false//是否允許do while 的條件表達式和閉合括號在同一行      "newlineAtEndOfFile""allow" // 文件結(jié)尾是否允許出現(xiàn)新行標識符    }  }}

配置規(guī)則共享


在實際應(yīng)用中,我們不止有一個項目,如果需要在多個項目中應(yīng)用同一套代碼審查規(guī)則,可以將stylecop.json文件復(fù)制到公共目錄,如解決方案文件夾,如下所示:

image

在需要添加的項目中,右鍵編輯項目文件,然后在項目文件中添加如下代碼,將共享規(guī)則文件鏈接到項目中,如下所示:

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

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

image

并且在一個地方修改stylecop.json文件,會同時生效,因為兩個項目都是鏈接的同一個json文件。在項目中如下所示:

image


以上就是《推薦一款代碼規(guī)范檢查(CodeReview)神器》的全部內(nèi)容,關(guān)于更多詳細內(nèi)容,可參考官方文檔。希望能夠一起學習,共同進步。

學習編程,從關(guān)注【老碼識途】開始,為大家分享更多文章?。。?/span>

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多