MiKo Analyzers
1.0.0
提供基於.NET編譯器平台(Roslyn)的分析儀,可在Visual Studio 2019(V16.11)或2022(V17.11)中使用。
這裡描述瞭如何安裝羅斯林分析儀。
可以在此處找到有關如何使用此類分析儀的屏幕截圖。
以下表列出了分析儀當前提供的所有473條規則。
| ID | 標題 | 默認情況下啟用 | 可用的代碼文件 |
|---|---|---|---|
| miko_0001 | 方法太大了 | ✓ | - |
| miko_0002 | 方法太複雜了 | ✓ | - |
| miko_0003 | 類型太大 | ✓ | - |
| miko_0004 | 方法有太多參數 | ✓ | - |
| miko_0005 | 本地功能太大 | ✓ | - |
| miko_0006 | 本地功能太複雜了 | ✓ | - |
| miko_0007 | 本地功能的參數太多 | ✓ | - |
| ID | 標題 | 默認情況下啟用 | 可用的代碼文件 |
|---|---|---|---|
| miko_1000 | “ system.eventargs”類型應加上“ EventArgs”的後綴 | ✓ | ✓ |
| miko_1001 | “ system.eventargs”參數應命名為'e' | ✓ | ✓ |
| miko_1002 | 參數應根據事件處理程序的.NET框架設計指南命名 | ✓ | ✓ |
| miko_1003 | 事件處理方法名稱應遵循.NET框架設計指南 | ✓ | ✓ |
| miko_1004 | 事件不應包含其名稱中的術語“事件” | ✓ | ✓ |
| miko_1005 | “ system.eventargs”變量應適當命名 | ✓ | ✓ |
| miko_1006 | 事件應與“ EventArgs”一起使用“ EventHandler <t>”,該事件以事件命名 | ✓ | - |
| miko_1007 | 事件及其相應的“ EventArgs”類型應位於同一命名空間中 | ✓ | - |
| miko_1008 | 參數應根據依賴關係事件處理程序的.NET框架設計指南命名 | ✓ | ✓ |
| miko_1009 | “ system.eventhandler”變量應正確命名 | ✓ | ✓ |
| miko_1010 | 方法不應包含其名稱中的“ canececute”或“執行” | ✓ | ✓ |
| miko_1011 | 方法不應包含其名稱中的“做” | ✓ | ✓ |
| miko_1012 | 方法應命名為“升起”而不是“火” | ✓ | ✓ |
| miko_1013 | 方法不應被命名為“通知”或“ nonotify” | ✓ | ✓ |
| miko_1014 | 方法不應用模棱兩可的“檢查”命名 | ✓ | ✓ |
| miko_1015 | 方法應命名為“初始化”而不是“ init” | ✓ | ✓ |
| miko_1016 | 工廠方法應命名為“創建” | ✓ | ✓ |
| miko_1017 | 方法不應以“ get”或“集”為前綴,如果是“ is”,“ can or'can or'hos” | ✓ | ✓ |
| miko_1018 | 方法不應用動詞的名詞來加以後綴 | ✓ | ✓ |
| miko_1019 | “清除”和“刪除”方法應根據其參數數量命名 | ✓ | ✓ |
| miko_1020 | 類型名稱應限制長度 | - | - |
| miko_1021 | 方法名稱應限制長度 | - | - |
| miko_1022 | 參數名稱應限制長度 | - | - |
| miko_1023 | 現場名稱應限制長度 | - | - |
| miko_1024 | 屬性名稱應限制長度 | - | - |
| miko_1025 | 事件名稱應限制長度 | - | - |
| miko_1026 | 可變名稱應限制長度 | - | - |
| Miko_1027 | 循環中的可變名稱應限制 | - | - |
| miko_1028 | 本地功能名稱應限制長度 | - | - |
| Miko_1030 | 類型不應具有“抽象”或“基礎”標記來表明它們是基本類型 | ✓ | ✓ |
| miko_1031 | 實體類型不應使用“模型”後綴 | ✓ | ✓ |
| miko_1032 | 與實體打交道的方法不應使用“模型”作為標記 | ✓ | ✓ |
| miko_1033 | 代表實體的參數不應使用“模型”後綴 | ✓ | ✓ |
| miko_1034 | 代表實體的字段不應使用“模型”後綴 | ✓ | ✓ |
| miko_1035 | 與實體打交道的屬性不應使用“模型”標記 | ✓ | ✓ |
| miko_1036 | 與實體有關的事件不應使用“模型”標記 | ✓ | ✓ |
| miko_1037 | 類型不應用“類型”,“接口”,“類”,“ struct”,“ record”或“ enum'”來加以後綴 | ✓ | ✓ |
| miko_1038 | 包含擴展方法的類應以同一後綴結束 | ✓ | ✓ |
| miko_1039 | 擴展方法的“此”參數應具有默認名稱 | ✓ | ✓ |
| miko_1040 | 參數不應與實施詳細信息相結合 | ✓ | - |
| miko_1041 | 實施詳細信息不應將字段帶到後綴 | ✓ | - |
| miko_1042 | “取消token”參數應具有特定名稱 | ✓ | ✓ |
| miko_1043 | “取消token”變量應具有特定名稱 | ✓ | ✓ |
| miko_1044 | 命令應用“命令”後綴 | ✓ | ✓ |
| miko_1045 | 命令調用的方法不應用“命令”後綴 | ✓ | ✓ |
| miko_1046 | 異步方法應遵循基於任務的異步模式(TAP) | ✓ | ✓ |
| miko_1047 | 未遵循基於任務的異步圖案(TAP)的方法不應撒謊。 | ✓ | ✓ |
| miko_1048 | 價值轉換器的類應以特定後綴結尾 | ✓ | ✓ |
| miko_1049 | 不要使用諸如“應”,“應”,“必須”或“需求”之類的要求術語 | ✓ | ✓ |
| miko_1050 | 返回值應具有描述性名稱 | ✓ | ✓ |
| miko_1051 | 請勿使用委託類型的後綴參數 | ✓ | ✓ |
| miko_1052 | 請勿使用委託類型的後綴變量 | ✓ | ✓ |
| miko_1053 | 請勿使用委託類型的後綴字段 | ✓ | ✓ |
| miko_1054 | 不要命名類型“助手”或“實用程序” | ✓ | ✓ |
| miko_1055 | 依賴性屬性應與“屬性”(如.NET框架中)後綴 | ✓ | ✓ |
| miko_1056 | 依賴性屬性應與屬性名稱(如.NET框架)前綴。 | ✓ | ✓ |
| miko_1057 | 依賴性屬性密鑰應加上“鍵”(如.NET框架中) | ✓ | ✓ |
| miko_1058 | 依賴關係屬性密鑰應以屬性名稱(如.NET框架)前綴為前綴 | ✓ | ✓ |
| miko_1059 | 請勿將類型命名為“ Impl”或“實現” | ✓ | ✓ |
| miko_1060 | 使用'<entity> notfound'而不是'get <entity>失敗'或'<entity>丟失' | ✓ | ✓ |
| miko_1061 | “ try”方法的名稱[out]參數應該是特定的 | ✓ | ✓ |
| miko_1062 | “ can/has/contains”方法,屬性或字段應僅由幾個單詞組成 | ✓ | - |
| miko_1063 | 不要在名稱中使用縮寫 | ✓ | ✓ |
| miko_1064 | 參數名稱反映了他們的含義,而不是他們的類型 | ✓ | - |
| miko_1065 | 運算符參數應根據.NET框架設計準則命名 | ✓ | ✓ |
| miko_1066 | 分配給屬性的構造函數參數應以屬性為名 | ✓ | ✓ |
| miko_1067 | 方法不應包含其名稱中的“執行” | ✓ | ✓ |
| miko_1068 | 工作流方法應命名為“ canrun”或“運行” | ✓ | - |
| miko_1069 | 屬性名稱反映了他們的含義,而不是他們的類型 | ✓ | - |
| miko_1070 | 本地收集變量應使用複數名稱 | ✓ | ✓ |
| miko_1071 | 本地佈爾變量應命名為語句,而不是問題 | ✓ | - |
| miko_1072 | 布爾屬性或方法應命名為語句,而不是問題 | ✓ | - |
| miko_1073 | 布爾字段應命名為陳述,而不是問題 | ✓ | - |
| miko_1074 | 用於鎖定的對象應用“鎖”後綴 | ✓ | - |
| miko_1075 | non-'ysystem.eventargs的類型不應用“ EventArgs”加以後綴 | ✓ | ✓ |
| miko_1076 | 棱鏡事件類型應以“事件”為後綴 | ✓ | ✓ |
| miko_1077 | 枚舉成員不應用“枚舉”後綴 | ✓ | ✓ |
| Miko_1078 | 構建器方法名稱應以“構建”開頭 | ✓ | ✓ |
| miko_1079 | 存儲庫不應與“存儲庫”相處 | ✓ | ✓ |
| miko_1080 | 名稱應包含數字而不是拼寫 | ✓ | - |
| miko_1081 | 方法不應用一個數字後綴 | ✓ | ✓ |
| miko_1082 | 如果其類型的數字後綴 | ✓ | ✓ |
| miko_1083 | 如果字段具有數字,則不應將字段帶有後綴 | ✓ | ✓ |
| miko_1084 | 如果變量具有數字,則不應將變量帶有後綴 | ✓ | ✓ |
| miko_1085 | 參數不應用數字後綴 | ✓ | ✓ |
| miko_1086 | 方法不應使用數字命名為lang | ✓ | - |
| Miko_1087 | 在基類中的對應物之後的構造函數參數 | ✓ | ✓ |
| miko_1088 | Singleton實例應命名為“實例” | ✓ | - |
| miko_1089 | 方法不應以“ get”為前綴 | ✓ | ✓ |
| miko_1090 | 參數不應與特定類型相當 | ✓ | ✓ |
| miko_1091 | 變量不應與特定類型相當 | ✓ | ✓ |
| miko_1092 | “能力”類型不應用冗餘信息加以後綴 | ✓ | ✓ |
| Miko_1093 | 請勿使用後綴“對象”或“ struct” | ✓ | ✓ |
| miko_1094 | 請勿使用被動名稱名稱的後綴類型 | ✓ | - |
| miko_1095 | 請勿在名稱和文檔中使用“刪除”和“刪除” | ✓ | - |
| miko_1096 | 名稱應該使用“失敗”而不是“毫不努力” | ✓ | - |
| miko_1097 | 參數名稱不應遵循字段的命名方案 | ✓ | ✓ |
| miko_1098 | 類型名稱應反映他們實施的業務界面 | ✓ | - |
| miko_1099 | 方法過載上的匹配參數應具有相同的名稱 | ✓ | ✓ |
| miko_1100 | 測試類應從測試類型的名稱開始 | ✓ | - |
| miko_1101 | 測試類應以“測試”結尾 | ✓ | ✓ |
| miko_1102 | 測試方法不應在其名稱中包含“測試” | ✓ | ✓ |
| miko_1103 | 測試初始化方法應命名為“ PreparEtest” | ✓ | ✓ |
| miko_1104 | 測試清理方法應命名為“清潔量” | ✓ | ✓ |
| miko_1105 | 一次性測試初始化方法應命名為“ PreperEtestenvironment” | ✓ | ✓ |
| miko_1106 | 一次性測試清理方法應命名為“清潔式環境” | ✓ | ✓ |
| miko_1107 | 測試方法不應進行帕斯卡式播種 | ✓ | ✓ |
| miko_1108 | 請勿將變量,參數,字段和屬性命名為“模擬”,“存根”,“假”或“ Shim” | ✓ | ✓ |
| miko_1109 | 可前綴可測試類型的“可測試”,而不是使用“ UT”後綴 | ✓ | ✓ |
| miko_1110 | 參數的測試方法應用下劃線後綴 | ✓ | ✓ |
| miko_1111 | 沒有參數的測試方法不應用下劃線後綴 | ✓ | ✓ |
| miko_1112 | 請勿將測試數據命名為“任意” | ✓ | ✓ |
| miko_1113 | 測試方法不應根據BDD樣式命名 | ✓ | - |
| miko_1114 | 測試方法不應命名為“ Happypath”或“ BadPath” | ✓ | - |
| miko_1115 | 測試方法應以流利的方式命名 | ✓ | ✓ |
| Miko_1200 | 捕獲塊中的名稱例外 | ✓ | ✓ |
| Miko_1201 | 名稱異常為參數一致 | ✓ | ✓ |
| miko_1300 | Lambda語句中不重要的標識符應命名為“ _” | ✓ | ✓ |
| miko_1400 | 名稱名稱應為複數 | ✓ | - |
| miko_1401 | 名稱空間不應包含技術語言名稱 | ✓ | - |
| miko_1402 | 名稱空間不應以WPF特定的設計模式命名 | ✓ | - |
| miko_1403 | 名稱空間不應在其父母名稱空間中命名 | ✓ | - |
| miko_1404 | 名稱空間不應包含非特異性名稱 | ✓ | - |
| miko_1405 | 名稱空間不應包含“ lib” | ✓ | - |
| miko_1406 | 值轉換器應放在“轉換器”名稱空間中 | ✓ | - |
| miko_1407 | 測試名稱空間不應包含“測試” | ✓ | - |
| miko_1408 | 擴展方法應與擴展類型相同的命名空間 | ✓ | - |
| miko_1409 | 請勿以下劃線為前綴或後綴名稱空間 | ✓ | - |
| ID | 標題 | 默認情況下啟用 | 可用的代碼文件 |
|---|---|---|---|
| miko_2000 | 文檔應有效xml | ✓ | ✓ |
| miko_2001 | 事件應正確記錄 | ✓ | ✓ |
| Miko_2002 | Eventargs應正確記錄 | ✓ | ✓ |
| Miko_2003 | 事件處理程序的文檔應具有默認的啟動短語 | ✓ | ✓ |
| Miko_2004 | 事件處理程序參數名稱的文檔應遵循事件處理程序的NET框架設計指南 | ✓ | ✓ |
| Miko_2005 | 應正確記錄對EventArgs的文本引用 | ✓ | - |
| Miko_2006 | 路由事件應如.NET框架所做的記錄 | ✓ | ✓ |
| Miko_2010 | 密封的課程應記錄被密封 | ✓ | ✓ |
| Miko_2011 | 未密封的課程不應撒謊 | ✓ | ✓ |
| Miko_2012 | <summary>文檔應描述該類型的責任 | ✓ | ✓ |
| Miko_2013 | <summary>枚舉的文檔應具有默認的啟動短語 | ✓ | ✓ |
| Miko_2014 | 處置方法應如.NET框架所做的記錄 | ✓ | ✓ |
| Miko_2015 | 文檔應使用“加薪”或“投擲”而不是“火” | ✓ | ✓ |
| Miko_2016 | 異步方法的文檔應從特定短語開始 | ✓ | ✓ |
| Miko_2017 | 依賴性屬性應如.NET框架所做的記錄 | ✓ | ✓ |
| Miko_2018 | 文檔不應使用模棱兩可的術語“檢查”或“測試” | ✓ | ✓ |
| Miko_2019 | <summary>文檔應從第三人稱奇異動詞開始(例如“提供”) | ✓ | - |
| miko_2020 | 繼承的文檔應與<sashitdoc />標記一起使用 | ✓ | ✓ |
| miko_2021 | 參數的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2022 | [out]參數的文檔應具有默認的啟動短語 | ✓ | ✓ |
| Miko_2023 | 布爾參數的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2024 | 枚舉參數的文檔應具有默認的啟動短語 | ✓ | ✓ |
| Miko_2025 | “ concellationToken”參數的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2026 | 使用的參數不應記錄為未使用的 | ✓ | - |
| Miko_2027 | 序列化構造函數參數應記錄在特定短語中 | ✓ | ✓ |
| Miko_2028 | 參數文檔不僅應包含參數的名稱 | ✓ | - |
| Miko_2029 | <SasenitDoc>文檔不應使用“ CREF” | ✓ | ✓ |
| Miko_2030 | 返回值的文檔應具有默認的啟動短語 | ✓ | - |
| miko_2031 | 任務返回值的文檔應具有特定的(啟動)短語 | ✓ | ✓ |
| miko_2032 | 布爾回報值的文檔應具有特定的短語 | ✓ | ✓ |
| miko_2033 | 字符串返回值的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2034 | 枚舉返回值的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2035 | 收集返回值的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2036 | 布爾或枚舉屬性的文檔應描述默認值 | ✓ | ✓ |
| miko_2037 | <摘要>命令屬性的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2038 | <summary>命令的文檔應具有默認的啟動短語 | ✓ | ✓ |
| Miko_2039 | <summary>包含擴展方法的類的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2040 | <參見langword =“ ...”/>應該使用而不是<c> ... </c> | ✓ | ✓ |
| miko_2041 | <summary>文檔不應包含其他文檔標籤 | ✓ | ✓ |
| miko_2042 | 文檔應使用'<para/>'xml標籤而不是'<br/>'html標籤 | ✓ | ✓ |
| miko_2043 | <summary>自定義代表的文檔應具有默認的啟動短語 | ✓ | ✓ |
| miko_2044 | 文檔參考方法參數正確 | ✓ | ✓ |
| miko_2045 | <summary>文檔不應參考參數 | ✓ | ✓ |
| miko_2046 | 文檔應正確參考參數 | ✓ | ✓ |
| miko_2047 | <summary>屬性的文檔應具有默認的啟動短語 | ✓ | - |
| Miko_2048 | <摘要>價值轉換器的文檔應具有默認的啟動短語 | ✓ | ✓ |
| Miko_2049 | 文檔應該更明確,而不是使用“將是” | ✓ | ✓ |
| Miko_2050 | 在.NET框架之後應記錄例外 | ✓ | ✓ |
| miko_2051 | 拋出的異常應記錄為一種條件(例如'<paramref name =“ xyz”/> is <c> 42 </c>') | ✓ | ✓ |
| miko_2052 | 應使用默認短語記錄參數nullexception | ✓ | ✓ |
| Miko_2053 | 拋出參數Nullexception應僅記錄在參考類型參數 | ✓ | - |
| miko_2054 | 應使用默認的啟動短語記錄參數的拋棄 | ✓ | ✓ |
| miko_2055 | 應使用默認的啟動短語來記錄參數outofrangeException的參數。 | ✓ | ✓ |
| miko_2056 | 應使用默認的結尾短語記錄對象disposedexception的投擲 | ✓ | ✓ |
| Miko_2057 | 不可一次性的類型不得拋出對象disposedexception | ✓ | ✓ |
| miko_2059 | 同一例外的多個文檔應合併為一個 | ✓ | ✓ |
| miko_2060 | 工廠應以統一的方式記錄 | ✓ | ✓ |
| miko_2070 | <summary>文檔不應以“返回”開頭 | ✓ | ✓ |
| miko_2071 | <summary>返回枚舉類型的方法的文檔不應包含布爾類型的短語 | ✓ | - |
| Miko_2072 | <summary>文檔不應以“嘗試”開頭 | ✓ | ✓ |
| miko_2073 | <summary>“包含”方法的文檔應以“確定”開始 | ✓ | ✓ |
| miko_2074 | “包含”方法的參數文檔應具有默認的結尾短語 | ✓ | ✓ |
| miko_2075 | 文檔應使用術語“回調”,而不是“操作”,“ func”或“ function” | ✓ | ✓ |
| Miko_2076 | 文檔應記錄可選參數的默認值 | ✓ | ✓ |
| Miko_2077 | <summary>文檔不應包含<code> | ✓ | - |
| Miko_2078 | <code>文檔不應包含XML標籤 | ✓ | - |
| Miko_2079 | <summary>屬性文檔不應具有明顯的文本 | ✓ | ✓ |
| miko_2080 | <summary>字段的文檔應具有默認的啟動短語 | ✓ | ✓ |
| Miko_2081 | <summary>公共可見的僅閱讀字段的文檔應具有默認的結尾短語 | ✓ | ✓ |
| Miko_2082 | <summary>枚舉成員的文檔不應從枚舉的默認啟動短語<summary>文檔開始 | ✓ | ✓ |
| Miko_2090 | 平等操作員的文檔應具有默認短語 | ✓ | ✓ |
| Miko_2091 | 不平等運營商的文檔應具有默認短語 | ✓ | ✓ |
| miko_2100 | <xhamex>文檔應以描述性默認短語開始 | ✓ | ✓ |
| miko_2101 | <xhamex>文檔應在<code>標籤中顯示代碼示例 | ✓ | ✓ |
| miko_2200 | 使用大寫字母開始評論 | ✓ | ✓ |
| miko_2201 | 使用大寫字母在評論中開始句子 | ✓ | - |
| miko_2202 | 文檔應使用術語“標識符”而不是“ ID” | ✓ | ✓ |
| miko_2203 | 文檔應使用“唯一標識符”一詞,而不是“ GUID” | ✓ | ✓ |
| miko_2204 | 文檔應使用<list>進行枚舉 | ✓ | ✓ |
| miko_2205 | 文檔應使用<note>以獲取重要信息 | ✓ | - |
| miko_2206 | 文檔不應使用“標誌”一詞 | ✓ | - |
| miko_2207 | <summary>文件應為簡短 | ✓ | - |
| miko_2208 | 文檔不應使用“實例”一詞 | ✓ | ✓ |
| miko_2209 | 請勿在文檔中使用雙重時期 | ✓ | ✓ |
| miko_2210 | 文檔應使用術語“信息”代替“信息” | ✓ | ✓ |
| miko_2211 | 枚舉成員不應有<備註>節 | ✓ | ✓ |
| miko_2212 | 文檔應使用“失敗”短語而不是“未成功” | ✓ | ✓ |
| miko_2213 | 文檔不應使用收縮“ n't” | ✓ | ✓ |
| miko_2214 | 文檔不應包含空行 | ✓ | ✓ |
| miko_2215 | 文檔中的句子應縮短 | ✓ | - |
| miko_2216 | 使用<paramref>而不是<param>進行參考參數 | ✓ | ✓ |
| miko_2217 | <list>文檔正確完成 | ✓ | ✓ |
| miko_2218 | 文檔應使用較短的術語,而不是長期“用於/in/by” | ✓ | ✓ |
| miko_2219 | 請勿在文檔中使用問題或爆炸標記 | ✓ | - |
| miko_2220 | 文檔應使用“尋求”而不是“尋找”,“檢查”或“測試” | ✓ | ✓ |
| miko_2221 | 文檔不應使用空的XML標籤 | ✓ | - |
| miko_2222 | 文檔應使用術語“標識”而不是“ esident” | ✓ | ✓ |
| miko_2223 | 文檔鏈接引用通過<請參閱cref =“ ...”/> | ✓ | - |
| miko_2224 | 文檔應在單獨的行上有XML標籤和文本 | ✓ | ✓ |
| miko_2225 | 用<c>標記的代碼應放在單行上 | ✓ | ✓ |
| miko_2226 | 文檔應解釋“為什麼”而不是“那個” | ✓ | - |
| miko_2227 | 文檔不應包含抑制重量 | ✓ | - |
| miko_2228 | 文檔應使用積極的措辭而不是負面措辭 | ✓ | - |
| miko_2229 | 文檔不應包含剩下的XML片段 | ✓ | ✓ |
| miko_2231 | 覆蓋的“ gethashcode()”方法的文檔應使用<sentaritdoc />'標記 | ✓ | ✓ |
| miko_2232 | <summary>文檔不應為空 | ✓ | ✓ |
| miko_2233 | XML標籤應放在單行上 | ✓ | ✓ |
| miko_2300 | 評論應解釋“為什麼”而不是“如何” | ✓ | - |
| miko_2301 | 請勿在AAA測試中使用明顯的評論 | ✓ | ✓ |
| miko_2302 | 不要保留評論的代碼 | ✓ | - |
| miko_2303 | 不要結束一段時間的評論 | ✓ | ✓ |
| miko_2304 | 不要提出評論作為問題 | ✓ | - |
| miko_2305 | 請勿在評論中使用雙重時期 | ✓ | ✓ |
| miko_2306 | 結束評論一段時間 | - | - |
| miko_2307 | 評論應使用“失敗”一詞而不是“未成功” | ✓ | ✓ |
| miko_2308 | 在關閉支架之前,請勿在單行上發表評論,而是在代碼之後發表評論 | ✓ | ✓ |
| Miko_2309 | 評論不應使用收縮“不”的收縮 | ✓ | ✓ |
| miko_2310 | 評論應解釋“為什麼”而不是“那個” | ✓ | - |
| miko_2311 | 不要使用分離器評論 | ✓ | ✓ |
| ID | 標題 | 默認情況下啟用 | 可用的代碼文件 |
|---|---|---|---|
| miko_3000 | 不要使用空區域 | ✓ | - |
| miko_3001 | 不應使用自定義代表 | ✓ | - |
| miko_3002 | 課程不應該有太多的依賴性 | ✓ | - |
| miko_3003 | 事件應遵循事件的.NET框架設計指南 | ✓ | - |
| miko_3004 | EventArgs的物業設定器應為私人 | ✓ | - |
| miko_3005 | 名為“嘗試”的方法應遵循Trier-doer-Pattern | ✓ | - |
| miko_3006 | “取消token”參數應該是最後的方法參數 | ✓ | - |
| miko_3007 | 請勿使用相同方法使用Linq方法和聲明性查詢語法 | ✓ | - |
| miko_3008 | 方法不應返回可以從外部更改的收集 | ✓ | - |
| miko_3009 | 命令應僅調用命名方法,而無lambda表達式 | ✓ | - |
| Miko_3010 | 不要創建或投擲保留的異常類型 | ✓ | - |
| miko_3011 | 拋出的參數exceptions(或其子類型)應提供正確的參數名稱 | ✓ | ✓ |
| miko_3012 | 拋出的grognmofrangeExceptions(或其子類型)應提供導致例外的實際值 | ✓ | ✓ |
| Miko_3013 | “ switch”語句中的“默認”子句應拋出一個grigentoutofrangeException(或subtype),但沒有參數exception | ✓ | ✓ |
| miko_3014 | InvalidOperationException,notimplemplededexception和notsupportedException應該有一個原因 | ✓ | ✓ |
| miko_3015 | 拋出無效的exceptions(而不是參數exceptions或其子類型),以指示無參數方法的不適當狀態 | ✓ | ✓ |
| Miko_3016 | 請勿對不適當的財產退貨價值持有參數nullexception | ✓ | ✓ |
| Miko_3017 | 扔新例外時不要吞嚥例外 | ✓ | ✓ |
| miko_3018 | 將objectDisposedexceptions投入到一次性可見類型的公開方法上 | ✓ | - |
| miko_3020 | 使用“ task.completedTask”而不是“ task.fromresult” | ✓ | ✓ |
| miko_3021 | 在實現中不要使用“ task.run” | ✓ | - |
| miko_3022 | 請勿返回任務<ienumerable>或任務<iEnumerable <t>> | ✓ | - |
| Miko_3023 | 請勿將“取消tokensource”用作參數 | ✓ | - |
| Miko_3024 | 請勿在參考參數上使用[ref]關鍵字 | ✓ | - |
| Miko_3025 | 請勿重新分配方法參數 | ✓ | - |
| Miko_3026 | 未使用的參數應刪除 | ✓ | - |
| Miko_3027 | 參數不應被標記為保留以供將來使用 | ✓ | - |
| Miko_3028 | 請勿將null分配給lambda參數 | ✓ | - |
| Miko_3029 | 事件註冊不應導致內存洩漏 | ✓ | - |
| Miko_3030 | 方法應遵循Demeter的法律 | - | - |
| miko_3031 | 不應實現ICLONABLE.CLONE() | ✓ | - |
| miko_3032 | 使用“名稱”而不是cinch for創建的屬性名稱'屬性changedeventargs'實例 | ✓ | ✓ |
| Miko_3033 | 將“名稱”用於創建的屬性名稱,用於創建的“ propertyChangingEventargs”和“ propertyChangeDeventargs”實例 | ✓ | ✓ |
| Miko_3034 | Property Changed事件提升器應使用[Callermembername]屬性 | ✓ | ✓ |
| Miko_3035 | 不要在沒有超時的情況下調用“ Waitone”方法 | ✓ | - |
| Miko_3036 | 更喜歡使用“ timespan”工廠方法而不是構造函數 | ✓ | ✓ |
| Miko_3037 | 不要在超時使用魔術數字 | ✓ | - |
| Miko_3038 | 不要使用魔術數字 | ✓ | - |
| Miko_3039 | 屬性不應使用linq或產量 | ✓ | - |
| miko_3040 | 除非您絕對確定您永遠不需要2個值,否則不要使用布爾值 | ✓ | - |
| miko_3041 | Eventargs不得使用代表 | ✓ | - |
| miko_3042 | EventArgs不得實現接口 | ✓ | - |
| miko_3043 | 使用“名稱”進行WeakeventManager事件(DE-)註冊 | ✓ | ✓ |
| Miko_3044 | 使用“名稱”比較“屬性Changingeventargs”和“ PropertyChangeDeventargs”的屬性名稱 | ✓ | ✓ |
| miko_3045 | 將“名稱”用於EventManager事件註冊 | ✓ | ✓ |
| miko_3046 | 將“名稱”用於財產籌集方法的屬性名稱 | ✓ | ✓ |
| Miko_3047 | 使用“ nameof”進行應用[contentproperty]屬性 | ✓ | ✓ |
| Miko_3048 | ValueConverter應具有[valueConversion]屬性 | ✓ | - |
| Miko_3049 | 枚舉成員應具有[描述]屬性 | ✓ | - |
| Miko_3050 | 依賴性Property字段應為“公共靜態讀取” | ✓ | ✓ |
| miko_3051 | 依賴關係範圍應正確註冊 | ✓ | ✓ |
| miko_3052 | 依賴性propertykey字段應為“靜態讀取”不公開 | ✓ | ✓ |
| Miko_3053 | 依賴關係properpykey字段應正確註冊 | ✓ | - |
| Miko_3054 | 僅讀取的依賴關係應具有裸露的依賴關係標識符 | ✓ | ✓ |
| Miko_3055 | ViewModels應實現InotifyPropertyChanged | ✓ | - |
| Miko_3060 | debug.assert或trace.sert不得使用 | ✓ | ✓ |
| miko_3061 | 登錄器應使用適當的日誌類別 | ✓ | - |
| miko_3062 | 結束結腸的例外日誌消息 | ✓ | ✓ |
| Miko_3063 | 用點結束非驗證日誌消息 | ✓ | ✓ |
| Miko_3064 | 日誌消息不應使用收縮“ n't” | ✓ | ✓ |
| Miko_3065 | Microsoft Loggging呼叫不應使用插值字符串 | ✓ | ✓ |
| Miko_3070 | 不要返回null以獲得ienumerable | ✓ | - |
| miko_3071 | 不要返回任務 | ✓ | - |
| Miko_3072 | 非私有方法不應返回'list <>'或'字典<>' | ✓ | - |
| Miko_3073 | 不要將對象部分初始化 | ✓ | - |
| Miko_3074 | 請勿在構造函數上定義“ ref”或“ out”參數 | ✓ | - |
| Miko_3075 | 除非需要從中衍生,否則內部和私人類型應是靜態的或密封的 | ✓ | ✓ |
| Miko_3076 | 請勿在下面或其他類型部分中使用靜態成員初始化靜態成員 | ✓ | - |
| Miko_3077 | 返回枚舉的屬性應具有默認值 | ✓ | ✓ |
| Miko_3078 | 枚舉成員應具有默認值 | ✓ | ✓ |
| Miko_3079 | Hresults應該用十六進制寫 | ✓ | ✓ |
| Miko_3080 | 分配變量時使用“開關...返回”而不是“開關...斷路” | ✓ | - |
| miko_3081 | 優先匹配模式而不是邏輯上的條件 | ✓ | ✓ |
| Miko_3082 | 優先匹配模式,而不是與“ true”或“ false”的邏輯比較 | ✓ | ✓ |
| Miko_3083 | 優先使用模式匹配對於無效檢查 | ✓ | ✓ |
| Miko_3084 | 不要將常數放在左側進行比較 | ✓ | ✓ |
| Miko_3085 | 有條件的陳述應該很短 | ✓ | - |
| Miko_3086 | 請勿嵌套條件語句 | ✓ | - |
| Miko_3087 | 不要使用負面複雜條件 | ✓ | - |
| Miko_3088 | 優先使用圖案匹配而不是無效檢查 | ✓ | ✓ |
| Miko_3089 | 請勿將簡單的常數屬性模式作為“ if”語句的條件 | ✓ | ✓ |
| Miko_3090 | 不要在最後塊中丟下例外 | ✓ | - |
| Miko_3091 | 不要在最後塊中提出事件 | ✓ | - |
| Miko_3092 | 不要在鎖中舉起活動 | ✓ | - |
| Miko_3093 | 不要在鎖中調用代表 | ✓ | - |
| Miko_3094 | 請勿調用鎖內參數的方法或屬性 | ✓ | - |
| Miko_3095 | 代碼塊不應為空 | ✓ | - |
| Miko_3096 | 使用字典代替大型開關語句 | ✓ | - |
| Miko_3097 | 不要施放輸入和返回對象 | ✓ | - |
| Miko_3098 | 被壓抑消息的理由應解釋 | ✓ | - |
| Miko_3099 | 請勿將枚舉值與null進行比較 | ✓ | ✓ |
| miko_3100 | 測試類和正在測試的類型屬於同一名稱空間 | ✓ | - |
| miko_3101 | 測試課程應包含測試 | ✓ | - |
| miko_3102 | 測試方法不應包含有條件的語句(例如'if','switch'等) | ✓ | - |
| miko_3103 | 測試方法不應使用“ Guid.NewGuid()” | ✓ | ✓ |
| miko_3104 | 正確使用Nunit的[組合]屬性 | ✓ | ✓ |
| miko_3105 | 測試方法應使用Nunit的流利斷言方法 | ✓ | ✓ |
| miko_3106 | 斷言不應使用平等或比較操作員 | ✓ | - |
| miko_3107 | 司法模擬條件匹配器僅在模擬上使用 | ✓ | ✓ |
| miko_3108 | 測試方法應使用斷言 | ✓ | - |
| miko_3109 | 多個斷言應使用斷言消息 | ✓ | ✓ |
| miko_3110 | 斷言不應使用“計數”或“長度” | ✓ | ✓ |
| miko_3111 | 斷言應使用“ is.zero”而不是“ is.equalto(0)” | ✓ | ✓ |
| miko_3112 | 斷言應該使用“ is.empty”而不是“ has.count.zero” | ✓ | ✓ |
| miko_3113 | 請勿使用FulentAssertions | ✓ | ✓ |
| miko_3114 | 使用'Mock.of <t>()'而不是'新模擬<t>()。對象' | ✓ | ✓ |
| miko_3115 | 測試方法應包含代碼 | ✓ | - |
| miko_3116 | 測試初始化方法應包含代碼 | ✓ | - |
| miko_3117 | 測試清理方法應包含代碼 | ✓ | - |
| miko_3118 | 測試方法不應使用模棱兩可的LINQ調用 | ✓ | - |
| miko_3119 | 測試方法不應簡單地返回完成的任務 | ✓ | ✓ |
| miko_3120 | MOQ模擬應使用值而不是“ It.is <>(...)”條件匹配器來驗證精確值 | ✓ | ✓ |
| miko_3121 | 測試應測試具體實現,而無接口 | ✓ | - |
| miko_3122 | 測試方法不應使用超過2個參數 | ✓ | - |
| miko_3201 | 如果語句可以在簡短的方法中倒置 | ✓ | ✓ |
| miko_3202 | 在所有路徑中返回時使用積極條件 | ✓ | ✓ |
| miko_3203 | 如果說明語句可以倒置 | ✓ | ✓ |
| miko_3204 | 如果陳述具有其他條款,則負面否決 | ✓ | ✓ |
| miko_3210 | 只有最長的超載應為虛擬或抽象 | ✓ | - |
| miko_3211 | 公共類型不應具有最終序列 | ✓ | - |
| miko_3212 | 不要通過提供其他處置方法來混淆開發人員 | ✓ | - |
| miko_3213 | 無參數處理方法遵循基本處理模式 | ✓ | - |
| miko_3214 | 接口不包含“開始/結束”或“ Enter/Exit”範圍定義方法 | ✓ | - |
| miko_3215 | 回調應為“ func <t,bool>”,而不是“謂詞<bool>” | ✓ | ✓ |
| miko_3216 | 具有初始化器的靜態字段應僅閱讀 | ✓ | ✓ |
| miko_3217 | 請勿使用具有其他通用類型作為類型參數的通用類型 | ✓ | - |
| miko_3218 | 不要在意外的地方定義擴展方法 | ✓ | - |
| miko_3219 | 公共成員不應是“虛擬” | ✓ | - |
| miko_3220 | 邏輯'&&'或'||'使用“ true”或“ false”的條件應簡化 | ✓ | ✓ |
| miko_3221 | gethashcode覆蓋應使用“ hashcode.combine” | ✓ | ✓ |
| miko_3222 | 可以簡化字符串比較 | ✓ | ✓ |
| miko_3223 | 參考比較可以簡化 | ✓ | ✓ |
| miko_3224 | 價值比較可以簡化 | ✓ | ✓ |
| miko_3225 | 可以簡化冗餘比較 | ✓ | ✓ |
| miko_3301 | 偏愛lambda表達體,而不是單個語句的括號的lambda表達塊 | ✓ | ✓ |
| miko_3302 | 偏愛簡單的lambda表達體,而不是單個參數的括號lambda表達式 | ✓ | ✓ |
| miko_3401 | 名稱空間層次結構不應太深 | ✓ | - |
| miko_3501 | 請勿抑制無效操作員的無效警告 | ✓ | ✓ |
| miko_3502 | 不要在Linq呼叫上抑制無效的警告 | ✓ | ✓ |
| ID | 標題 | 默認情況下啟用 | 可用的代碼文件 |
|---|---|---|---|
| miko_4001 | 應根據其參數數量訂購具有相同名稱的方法 | ✓ | ✓ |
| miko_4002 | 具有相同名稱和可訪問性的方法應並排放置 | ✓ | ✓ |
| miko_4003 | 處理方法應直接放置在構造函數和最終化器之後 | ✓ | ✓ |
| miko_4004 | 處置方法應放在所有其他相同可訪問性的其他方法之前 | ✓ | ✓ |
| miko_4005 | 給出類型的接口,其名稱應直接放置在類型的聲明之後 | ✓ | ✓ |
| miko_4007 | 應將操作員放在方法之前 | ✓ | ✓ |
| miko_4008 | GethashCode方法應在等於方法之後直接放置 | ✓ | ✓ |
| miko_4101 | 測試初始化方法應在一次性方法之後直接排序 | ✓ | ✓ |
| miko_4102 | 測試清理方法應在測試初始化方法和測試方法之前訂購 | ✓ | ✓ |
| miko_4103 | 一次性測試初始化方法應在所有其他方法之前排序 | ✓ | ✓ |
| miko_4104 | 一次性測試清理方法應在一次性測試初始化方法之後直接訂購 | ✓ | ✓ |
| ID | 標題 | 默認情況下啟用 | 可用的代碼文件 |
|---|---|---|---|
| miko_5001 | 僅在“ isDebugenabled”之後調用“調試”和“ debugformat”方法 | ✓ | ✓ |
| miko_5002 | “ xxxformat”方法應僅使用多個參數調用 | ✓ | ✓ |
| miko_5003 | 應為例外調用正確的日誌方法 | ✓ | - |
| Miko_5010 | 請勿在價值類型上使用'object.quals()' | ✓ | ✓ |
| Miko_5011 | 請勿與 +=操作員串聯字符串 | ✓ | - |
| miko_5012 | 請勿將“收益率”用於遞歸定義的結構 | ✓ | - |
| miko_5013 | 不要創建空數組 | ✓ | ✓ |
| miko_5014 | 如果返回值僅讀取,請勿創建空列表 | ✓ | ✓ |
| miko_5015 | 不要實習字面文字 | ✓ | ✓ |
| Miko_5016 | 在“ list.removeall”中使用標籤來查找' | ✓ | - |
| miko_5017 | 用字符串文字分配的字段或變量應該是恆定的 | ✓ | ✓ |
| ID | 標題 | 默認情況下啟用 | 可用的代碼文件 |
|---|---|---|---|
| miko_6001 | 日誌語句應被空白行包圍 | ✓ | ✓ |
| miko_6002 | 斷言語句應被空白包圍 | ✓ | ✓ |
| miko_6003 | 局部變量語句應在之前使用空白行 | ✓ | ✓ |
| miko_6004 | 可變分配語句應之前為空白行 | ✓ | ✓ |
| miko_6005 | 返回語句應在之前有空白行 | ✓ | ✓ |
| miko_6006 | 等待的陳述應被空白包圍 | ✓ | ✓ |
| miko_6007 | 測試語句應被空白包圍 | ✓ | ✓ |
| miko_6008 | 使用指令之前應為空白行 | ✓ | ✓ |
| miko_6009 | 嘗試語句應被空白包圍 | ✓ | ✓ |
| miko_6010 | 如果語句應被空白包圍 | ✓ | ✓ |
| miko_6011 | 鎖定語句應被空白包圍 | ✓ | ✓ |
| miko_6012 | foreach循環應被空白行包圍 | ✓ | ✓ |
| miko_6013 | 對於循環,應該被空白行包圍 | ✓ | ✓ |
| miko_6014 | 循環應被空白線包圍 | ✓ | ✓ |
| miko_6015 | 做/循環應被空白包圍 | ✓ | ✓ |
| miko_6016 | 使用語句應被空白包圍 | ✓ | ✓ |
| miko_6017 | 開關語句應被空白包圍 | ✓ | ✓ |
| miko_6018 | 休息陳述應被空白包圍 | ✓ | ✓ |
| miko_6019 | 繼續陳述應被空白包圍 | ✓ | ✓ |
| miko_6020 | 投擲聲明應被空白包圍 | ✓ | ✓ |
| miko_6021 | 參數Nullexception.Throwifnull語句應被空白包圍 | ✓ | ✓ |
| miko_6022 | 參數exception.throwifnullorrempty語句應被空白包圍 | ✓ | ✓ |
| miko_6023 | grognmofrangeException.throwif語句應被空白包圍 | ✓ | ✓ |
| miko_6024 | objectdisposedexception.throwif語句應被空白包圍 | ✓ | ✓ |
| miko_6030 | 初始化器的開放括號應直接放置在相應類型的定義下方 | ✓ | ✓ |
| miko_6031 | 三元算子的問題和結腸令牌應直接放置在相應條件下方 | ✓ | ✓ |
| miko_6032 | 多行參數位於方法末端的位置 | ✓ | ✓ |
| miko_6033 | 案例部分下方的塊的牙套應直接放置在相應的情況關鍵字下方 | ✓ | ✓ |
| miko_6034 | 點應與調用成員相同 | ✓ | ✓ |
| miko_6035 | 開放式括號應與調用方法放置在同一條線上 | ✓ | ✓ |
| miko_6036 | Lambda塊應直接放置在相應的箭頭下方 | ✓ | ✓ |
| miko_6037 | 單個參數應與調用方法相同 | ✓ | ✓ |
| miko_6038 | 鑄件應放在同一條線上 | ✓ | ✓ |
| miko_6039 | 返回值應與返回關鍵字相同的行上 | ✓ | ✓ |
| miko_6040 | 連續跨越多行的調用應與它們的點對齊 | ✓ | ✓ |
| miko_6041 | 任務應放在同一行 | ✓ | ✓ |
| miko_6042 | “新”關鍵字應與類型相同 | ✓ | ✓ |
| miko_6043 | 安裝時應將lambdas的表達式與蘭伯達本身相同 | ✓ | ✓ |
| miko_6044 | 運算符,例如'&&'或'||'應將其放置在與(右)操作數的同一條線上 | ✓ | ✓ |
| miko_6045 | 使用諸如'=='或'! ='之類的操作員的比較應放在同一行上 | ✓ | ✓ |
| miko_6046 | 使用諸如“+”或“%”之類的操作員的計算應放在同一行上 | ✓ | ✓ |
| miko_6047 | 開關表達式的括號應直接放置在相應的開關關鍵字下方 | ✓ | ✓ |
| miko_6048 | 邏輯條件應放在一條線上 | ✓ | ✓ |
| miko_6049 | 事件(UN-)註冊應被空白包圍 | ✓ | ✓ |
| miko_6050 | 多行論證在方法終止時定位了列表 | ✓ | ✓ |
| miko_6051 | 構造函數的結腸應與構建器呼叫相同 | ✓ | ✓ |
| miko_6052 | 基本類型列表的結腸應與第一壘類型相同 | ✓ | ✓ |
| miko_6053 | 單線論點應放在單線上 | ✓ | ✓ |
| miko_6054 | lambda箭頭應與lambda的參數相同 | ✓ | ✓ |
| miko_6055 | 分配聲明應被空白包圍 | ✓ | ✓ |
| miko_6056 | 收集表達式的括號應直接放置在同一地點收集初始化器括號 | ✓ | ✓ |
| miko_6057 | 鍵入參數約束子句應垂直對齊 | ✓ | ✓ |
| miko_6058 | 類型參數約束子句應在參數列表下方縮進 | ✓ | ✓ |
| miko_6059 | 多行條件定位在相關呼叫下方 | ✓ | ✓ |
| miko_6060 | 開關案例標籤應放置在同一條線上 | ✓ | ✓ |
| miko_6061 | 開關表達臂應放在同一條線上 | ✓ | ✓ |
| miko_6070 | 控制台聲明應被空白行包圍 | ✓ | ✓ |
| miko_6071 | 本地使用語句應被空白包圍 | ✓ | ✓ |