Meziantou.Analyzer
2.0.183
Roslyn Analyzer在設計,使用,安全性,性能和样式方面,在C#中實施一些良好實踐。
安裝Nuget軟件包https://www.nuget.org/packages/meziantou.analyzer/
如果您已經使用了其他分析儀,則可以檢查哪些規則已重複使用眾所周知的分析儀
| ID | 類別 | 描述 | 嚴重程度 | 已啟用 | 代碼修復 |
|---|---|---|---|---|---|
| MA0001 | 用法 | 缺少stringComparison | ✔️ | ✔️ | |
| MA0002 | 用法 | IequalityComparer <string>或ICOMPARER <string>缺少 | ✔️ | ✔️ | |
| MA0003 | 風格 | 添加參數名稱以提高可讀性 | ✔️ | ✔️ | |
| MA0004 | 用法 | 使用Task.configureawait | ✔️ | ✔️ | |
| MA0005 | 表現 | 使用array.empty <t>() | ✔️ | ✔️ | |
| MA0006 | 用法 | 使用字符串。平等而不是平等運算符 | ✔️ | ✔️ | |
| MA0007 | 風格 | 在最後一個值之後添加逗號 | ✔️ | ✔️ | |
| MA0008 | 表現 | 添加structlayOutAttribute | ✔️ | ✔️ | |
| MA0009 | 安全 | 添加正則評估超時 | ✔️ | ||
| MA0010 | 設計 | 帶有屬性屬性的標記屬性 | ✔️ | ✔️ | |
| MA0011 | 用法 | 缺少IFORMATPROVIDER | ✔️ | ||
| MA0012 | 設計 | 不要提出保留的異常類型 | ✔️ | ||
| MA0013 | 設計 | 類型不應擴展System.ApplicationException | ✔️ | ||
| MA0014 | 設計 | 請勿升級系統。 ApplicationException類型 | ✔️ | ||
| MA0015 | 用法 | 在參數exception中指定參數名稱 | ✔️ | ||
| MA0016 | 設計 | 更喜歡使用收集抽象而不是實現 | ✔️ | ||
| MA0017 | 設計 | 抽像類型不應具有公共或內部構造函數 | ✔️ | ✔️ | |
| MA0018 | 設計 | 請勿在通用類型上聲明靜態成員(已棄用;使用CA1000) | ✔️ | ||
| MA0019 | 用法 | 使用EventArgs.Empty | ✔️ | ✔️ | |
| MA0020 | 表現 | 使用直接方法代替LINQ方法 | ✔️ | ✔️ | |
| MA0021 | 用法 | 使用stringcomparer.gethashcode代替string.gethashcode | ✔️ | ✔️ | |
| MA0022 | 設計 | 返回task.fromresult而不是返回null | ✔️ | ✔️ | |
| MA0023 | 表現 | 添加regexoptions.explicitcapture | ✔️ | ||
| MA0024 | 用法 | 盡可能使用明確的字符串comparer | ✔️ | ✔️ | |
| MA0025 | 設計 | 實現功能而不是拋出NotimplementedException | ✔️ | ||
| MA0026 | 設計 | 修復托多評論 | ✔️ | ||
| MA0027 | 用法 | 更希望隱式地複發一個例外 | ✔️ | ✔️ | |
| MA0028 | 表現 | 優化字符串構造器的使用 | ✔️ | ✔️ | |
| MA0029 | 表現 | 結合LINQ方法 | ✔️ | ✔️ | |
| MA0030 | 表現 | 刪除無用的訂單電話 | ✔️ | ✔️ | |
| MA0031 | 表現 | 優化enumerable.count()用法 | ✔️ | ✔️ | |
| MA0032 | 用法 | 使用與comcellationToken參數的過載 | |||
| MA0033 | 設計 | 請勿使用ThreadStaticAttribute標記實例字段 | ✔️ | ||
| MA0035 | 用法 | 請勿使用危險的螺紋方法 | ✔️ | ||
| MA0036 | 設計 | 使課堂靜態 | ✔️ | ✔️ | |
| MA0037 | 用法 | 刪除空語句 | ✔️ | ✔️ | |
| MA0038 | 設計 | 使方法靜態(不推薦使用,使用CA1822) | ✔️ | ✔️ | |
| MA0039 | 安全 | 不要編寫自己的證書驗證方法 | ✔️ | ||
| MA0040 | 用法 | 將取消token參數轉發到採用一個的方法 | ✔️ | ✔️ | |
| MA0041 | 設計 | 使屬性靜態(不推薦使用,使用CA1822) | ✔️ | ✔️ | |
| MA0042 | 設計 | 請勿在異步方法中使用阻止呼叫 | ✔️ | ✔️ | |
| MA0043 | 用法 | 在參數exception中使用運算符的名稱 | ✔️ | ✔️ | |
| MA0044 | 表現 | 刪除無用的通話 | ✔️ | ✔️ | |
| MA0045 | 設計 | 請勿在同步方法中使用阻止調用(需要進行調用方法async) | ✔️ | ||
| MA0046 | 設計 | 使用EventHandler <t>聲明事件 | ✔️ | ||
| MA0047 | 設計 | 在名稱空間中聲明類型 | ✔️ | ||
| MA0048 | 設計 | 文件名必須匹配類型名稱 | ✔️ | ||
| MA0049 | 設計 | 類型名稱不應匹配包含名稱空間的名稱 | ✔️ | ||
| MA0050 | 設計 | 在迭代方法中正確驗證參數 | ✔️ | ✔️ | |
| MA0051 | 設計 | 方法太長了 | ✔️ | ||
| MA0052 | 表現 | 用名稱替換常數枚舉。 | ✔️ | ✔️ | |
| MA0053 | 設計 | 使課程密封 | ✔️ | ✔️ | |
| MA0054 | 設計 | 嵌入了被捕獲的例外作為Innerexception | ✔️ | ||
| MA0055 | 設計 | 請勿使用最終器 | ✔️ | ||
| MA0056 | 設計 | 請勿在構造函數中調用過多的成員 | ✔️ | ||
| MA0057 | 命名 | 班級名稱應以“屬性”結尾 | ✔️ | ||
| MA0058 | 命名 | 班級名稱應以“異常”結尾 | ✔️ | ||
| MA0059 | 命名 | 班級名稱應以“ EventArgs”結尾 | ✔️ | ||
| MA0060 | 設計 | 不使用stream.read/stream.readasync返回的值 | ✔️ | ||
| MA0061 | 設計 | 方法覆蓋不應更改默認值 | ✔️ | ✔️ | |
| MA0062 | 設計 | 不應用“ flagsattribute”標記非flags枚舉 | ✔️ | ||
| MA0063 | 表現 | 在訂購之前使用 | ✔️ | ||
| MA0064 | 設計 | 避免鎖定公開訪問的實例 | ✔️ | ||
| MA0065 | 表現 | 默認valueType.Equals或HashCode用於結構平等 | ✔️ | ||
| MA0066 | 表現 | 哈希表不友好類型在哈希表中使用 | ✔️ | ||
| MA0067 | 設計 | 使用Guid.Empty | ✔️ | ✔️ | |
| MA0068 | 設計 | 無效的無效屬性參數名稱 | ✔️ | ||
| MA0069 | 設計 | 非恆定靜態場不應該可見 | ✔️ | ||
| MA0070 | 設計 | 過時的屬性應包括說明 | ✔️ | ||
| MA0071 | 風格 | 避免使用冗餘 | ✔️ | ✔️ | |
| MA0072 | 設計 | 不要從最後一個塊中投擲 | ✔️ | ||
| MA0073 | 風格 | 避免與布爾常數進行比較 | ✔️ | ✔️ | |
| MA0074 | 用法 | 避免隱性文化敏感方法 | ✔️ | ✔️ | |
| MA0075 | 設計 | 請勿使用隱式文化敏感的tostring | ✔️ | ||
| MA0076 | 設計 | 請勿在插值字符串中使用隱式文化敏感的tostring | ✔️ | ||
| MA0077 | 設計 | 提供平等(t)的課程應實現Iquabalibal <t> | ✔️ | ✔️ | |
| MA0078 | 表現 | 使用“鑄造”而不是“選擇”來鑄造 | ✔️ | ✔️ | |
| MA0079 | 用法 | 使用.withCancellation()轉發取消token | ✔️ | ✔️ | |
| MA0080 | 用法 | 使用.withCancellation()使用取消令牌 | |||
| MA0081 | 設計 | 方法覆蓋不應省略參數關鍵字 | ✔️ | ✔️ | |
| MA0082 | 設計 | NAN不應在比較中使用 | ✔️ | ||
| MA0083 | 設計 | 構造函數中應該存在構造方法參數 | ✔️ | ||
| MA0084 | 設計 | 本地變量不應隱藏其他符號 | ✔️ | ||
| MA0085 | 用法 | 匿名代表不應被用來退訂事件 | ✔️ | ||
| MA0086 | 設計 | 不要從最終制度中投擲 | ✔️ | ||
| MA0087 | 設計 | 具有[DefaultParameTervalue]屬性的參數也應標記[可選] | ✔️ | ||
| MA0088 | 設計 | 使用[DefaultParameTervalue]而不是[DefaultValue] | ✔️ | ||
| MA0089 | 表現 | 優化字符串方法用法 | ✔️ | ✔️ | |
| MA0090 | 設計 | 刪除空的/最後阻止 | ✔️ | ||
| MA0091 | 用法 | 發件人應該是“這個”例如事件 | ✔️ | ✔️ | |
| MA0092 | 用法 | 靜態事件的發件人應該為“ null” | ✔️ | ||
| MA0093 | 用法 | Eventargs不應為null | ✔️ | ✔️ | |
| MA0094 | 設計 | 提供比較(t)的類應實現ICOMABLABLE <t> | ✔️ | ||
| MA0095 | 設計 | 實現Iquatable <t>的類應覆蓋等於(對象) | ✔️ | ||
| MA0096 | 設計 | 實現微觀<t>的類也應實現Iquabalable <t> | ✔️ | ||
| MA0097 | 設計 | 實現微妙<t>或微觀比較的類應覆蓋比較操作員 | ✔️ | ||
| MA0098 | 表現 | 使用索引代替LINQ方法 | ✔️ | ✔️ | |
| MA0099 | 用法 | 使用明確的枚舉值而不是0 | ✔️ | ||
| MA0100 | 用法 | 處置資源之前等待任務 | ✔️ | ||
| MA0101 | 用法 | 字符串包含線字符的隱式端 | ? | ✔️ | ✔️ |
| MA0102 | 設計 | 讓會員閱讀 | ✔️ | ✔️ | |
| MA0103 | 用法 | 使用序列等式而不是平等運算符 | ✔️ | ✔️ | |
| MA0104 | 設計 | 不要創建帶有BCL名稱的類型 | |||
| MA0105 | 表現 | 使用lambda參數而不是使用閉合 | ✔️ | ||
| MA0106 | 表現 | 通過使用“ factoryargument”參數過載來避免關閉 | ✔️ | ||
| MA0107 | 設計 | 不要使用對文化敏感的對象。 | |||
| MA0108 | 用法 | 刪除冗餘參數值 | ✔️ | ✔️ | |
| MA0109 | 設計 | 考慮添加具有跨度<t>或內存<t>的過載 | |||
| MA0110 | 表現 | 使用Regex源生成器 | ✔️ | ✔️ | |
| MA0111 | 表現 | 使用String.Create而不是FormatTableString | ✔️ | ✔️ | |
| MA0112 | 表現 | 使用“計數> 0”,而不是“任何()” | |||
| MA0113 | 設計 | 使用datetime.unixepoch | ✔️ | ✔️ | |
| MA0114 | 設計 | 使用dateTimeOffset.unixepoch | ✔️ | ✔️ | |
| MA0115 | 用法 | 未知組件參數 | ✔️ | ||
| MA0116 | 設計 | 具有[供應ParameterFromQuery]屬性的參數也應標記為[參數] | ✔️ | ✔️ | |
| MA0117 | 設計 | 具有[EditorRequired]屬性的參數也應標記為[參數] | ✔️ | ✔️ | |
| MA0118 | 設計 | [jsinvokable]方法必須公開 | ✔️ | ||
| MA0119 | 設計 | jsruntime不得在onitialization或Initializedasync中使用 | ✔️ | ||
| MA0120 | 表現 | 不使用返回值時使用IndokeVoidAsync | ✔️ | ✔️ | |
| MA0121 | 設計 | 不要覆蓋參數值 | |||
| MA0122 | 設計 | 帶有[supplyParameterFromquery]屬性的參數僅在可路由組件(@page)中有效 | ✔️ | ||
| MA0123 | 設計 | 序列編號必須是一個常數 | ✔️ | ||
| MA0124 | 設計 | 日誌參數類型無效 | ✔️ | ||
| MA0125 | 設計 | 日誌參數類型的列表包含無效類型 | ✔️ | ||
| MA0126 | 設計 | 日誌參數類型的列表包含重複 | ✔️ | ||
| MA0127 | 用法 | 使用string.equals而不是IS模式 | |||
| MA0128 | 用法 | 使用“ IS”運算符代替序列等式 | ✔️ | ✔️ | |
| MA0129 | 用法 | 等待使用語句的任務 | ✔️ | ||
| MA0130 | 用法 | getType()不應在system.type實例上使用 | ✔️ | ||
| MA0131 | 用法 | 參數nullexception.throwifnull不應與不可刪除的類型一起使用 | ✔️ | ||
| MA0132 | 設計 | 不要隱式轉換為dateTimeOffset | ✔️ | ||
| MA0133 | 設計 | 使用dateTimeOffset,而不是依靠隱式轉換 | ✔️ | ||
| MA0134 | 用法 | 觀察異步電話的結果 | ✔️ | ||
| MA0135 | 設計 | 日誌參數沒有配置的類型 | |||
| MA0136 | 用法 | 原始字符串包含線字符的隱式端 | ? | ✔️ | |
| MA0137 | 設計 | 當方法返回等待類型時,請使用“異步”後綴 | |||
| MA0138 | 設計 | 當方法不返回等待類型時,請勿使用“異步”後綴 | |||
| MA0139 | 設計 | 日誌參數類型無效 | ✔️ | ||
| MA0140 | 設計 | 如果和其他分支都有相同的代碼 | ✔️ | ||
| MA0141 | 用法 | 使用模式匹配代替不平等運算符進行零檢查 | ✔️ | ||
| MA0142 | 用法 | 使用模式匹配代替平等操作員進行零檢查 | ✔️ | ||
| MA0143 | 設計 | 主要的構造函數參數應被閱讀 | ✔️ | ||
| MA0144 | 表現 | 使用System.OperatingSystem檢查當前的操作系統 | ✔️ | ||
| MA0145 | 用法 | [unsafeaccessorattribute]方法的簽名無效 | ✔️ | ||
| MA0146 | 用法 | 必須在本地功能上明確設置名稱 | ✔️ | ||
| MA0147 | 用法 | 避免異步空隙法代表 | ✔️ | ||
| MA0148 | 用法 | 使用模式匹配代替平等運算符進行離散值 | ✔️ | ||
| MA0149 | 用法 | 使用模式匹配代替不平等運算符進行離散值 | ✔️ | ||
| MA0150 | 設計 | 請勿明確調用默認對象。 | ✔️ | ||
| MA0151 | 用法 | debuggerdisplay必須包含有效成員 | ✔️ | ||
| MA0152 | 表現 | 使用未包裝而不是使用兩次 | ✔️ | ||
| MA0153 | 設計 | 請勿直接以Datacalification Attribute登錄符號 | ✔️ | ||
| MA0154 | 設計 | 在XML評論中使用langword | ✔️ | ✔️ | |
| MA0155 | 設計 | 請勿使用異步空隙方法 | |||
| MA0156 | 設計 | 當方法返回iAsyncenumerable <t>時,請使用“ async”後綴 | |||
| MA0157 | 設計 | 當方法不返回iasyncenumerable <t>時,請勿使用“異步”後綴 | |||
| MA0158 | 表現 | 使用System.Threading.lock | ✔️ | ||
| MA0159 | 表現 | 使用“訂單”而不是“訂單” | ✔️ | ✔️ | |
| MA0160 | 表現 | 使用containskey而不是trygetValue | ✔️ | ||
| MA0161 | 用法 | 必須明確設置UsEshellexecute | |||
| MA0162 | 用法 | 使用Process.Start Overload與Processstartinfo | |||
| MA0163 | 用法 | 重定向標準輸入或輸出時,UsEshellexecute必須是錯誤的 | ✔️ | ||
| MA0164 | 風格 | 使用括號以使模式更清晰 | ✔️ | ✔️ | |
| MA0165 | 用法 | 做插值字符串 | ? | ✔️ | ✔️ |
| ID | 抑制規則 | 理由 |
|---|---|---|
MAS0001 | CA1822 | 抑制CA1822在用基準Dotnet屬性裝飾的方法上。 |
MAS0002 | CA1822 | 抑制CA1822在用system.text.json屬性(例如[jsonpropertyname]或[jsoninclude])的方法上抑制CA1822。 |
MAS0003 | IDE0058 | 抑制IDE0058在眾所周知的類型上 |