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在众所周知的类型上 |