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 | Question and colon tokens of ternary operators should be placed directly below the corresponding condition | ✓ | ✓ |
| MiKo_6032 | Multi-line parameters are positioned outdented at end of method | ✓ | ✓ |
| MiKo_6033 | Braces of blocks below case sections should be placed directly below the corresponding case keyword | ✓ | ✓ |
| MiKo_6034 | Dots should be placed on same line(s) as invoked members | ✓ | ✓ |
| MiKo_6035 | Open parenthesis should be placed on same line(s) as invoked methods | ✓ | ✓ |
| MiKo_6036 | Lambda blocks should be placed directly below the corresponding arrow(s) | ✓ | ✓ |
| MiKo_6037 | Single arguments should be placed on same line(s) as invoked methods | ✓ | ✓ |
| MiKo_6038 | Casts should be placed on same line(s) | ✓ | ✓ |
| MiKo_6039 | Return values should be placed on same line(s) as return keywords | ✓ | ✓ |
| MiKo_6040 | Consecutive invocations spaning multiple lines should be aligned by their dots | ✓ | ✓ |
| MiKo_6041 | Assignments should be placed on same line(s) | ✓ | ✓ |
| MiKo_6042 | 'new' keywords should be placed on same line(s) as the types | ✓ | ✓ |
| MiKo_6043 | Expression bodies of lambdas should be placed on same line as lambda itself when fitting | ✓ | ✓ |
| MiKo_6044 | Operators such as '&&' or '||' should be placed on same line(s) as their (right) operands | ✓ | ✓ |
| MiKo_6045 | Comparisons using operators such as '==' or '!=' should be placed on same line(s) | ✓ | ✓ |
| MiKo_6046 | Calculations using operators such as '+' or '%' should be placed on same line(s) | ✓ | ✓ |
| MiKo_6047 | Braces of switch expressions should be placed directly below the corresponding switch keyword | ✓ | ✓ |
| MiKo_6048 | Logical conditions should be placed on a single line | ✓ | ✓ |
| MiKo_6049 | Event (un-)registrations should be surrounded by blank lines | ✓ | ✓ |
| MiKo_6050 | Multi-line arguments are positioned outdented at end of method call | ✓ | ✓ |
| MiKo_6051 | Colon of constructor call shall be placed on same line as constructor call | ✓ | ✓ |
| MiKo_6052 | Colon of list of base types shall be placed on same line as first base type | ✓ | ✓ |
| MiKo_6053 | Single-line arguments shall be placed on single line | ✓ | ✓ |
| MiKo_6054 | Lambda arrows shall be placed on same line as the parameter(s) of the lambda | ✓ | ✓ |
| MiKo_6055 | Assignment statements should be surrounded by blank lines | ✓ | ✓ |
| MiKo_6056 | Brackets of collection expressions should be placed directly at the same place collection initializer braces would be positioned | ✓ | ✓ |
| MiKo_6057 | Type parameter constraint clauses should be aligned vertically | ✓ | ✓ |
| MiKo_6058 | Type parameter constraint clauses should be indented below parameter list | ✓ | ✓ |
| MiKo_6059 | Multi-line conditions are positioned outdented below associated calls | ✓ | ✓ |
| MiKo_6060 | Switch case labels should be placed on same line | ✓ | ✓ |
| MiKo_6061 | Switch expression arms should be placed on same line | ✓ | ✓ |
| MiKo_6070 | Console statements should be surrounded by blank lines | ✓ | ✓ |
| MiKo_6071 | Local using statements should be surrounded by blank lines | ✓ | ✓ |