Meziantou.Analyzer
2.0.183
เครื่องวิเคราะห์ Roslyn เพื่อบังคับใช้แนวทางปฏิบัติที่ดีใน C# ในแง่ของการออกแบบการใช้งานการรักษาความปลอดภัยประสิทธิภาพและสไตล์
ติดตั้งแพ็คเกจ NUGET https://www.nuget.org/packages/meziantou.analyzer/
หากคุณใช้เครื่องวิเคราะห์อื่นอยู่แล้วคุณสามารถตรวจสอบกฎที่ทำซ้ำกับเครื่องวิเคราะห์ที่รู้จักกันดี
| รหัสประจำตัว | หมวดหมู่ | คำอธิบาย | ความรุนแรง | เปิดใช้งาน | แก้ไขรหัส |
|---|---|---|---|---|---|
| Ma0001 | การใช้งาน | Stringcomparison หายไป | |||
| Ma0002 | การใช้งาน | iEqualityComparer <String> หรือ icomparer <String> หายไป | |||
| Ma0003 | สไตล์ | เพิ่มชื่อพารามิเตอร์เพื่อปรับปรุงความสามารถในการอ่าน | |||
| Ma0004 | การใช้งาน | ใช้ task.configureawait | |||
| Ma0005 | ผลงาน | ใช้ array.empty <T> () | |||
| Ma0006 | การใช้งาน | ใช้ string.equals แทนตัวดำเนินการเท่ากัน | |||
| Ma0007 | สไตล์ | เพิ่มเครื่องหมายจุลภาคหลังจากค่าสุดท้าย | |||
| Ma0008 | ผลงาน | เพิ่ม structlayoutattribute | |||
| Ma0009 | ความปลอดภัย | เพิ่มหมดเวลาประเมิน Regex | |||
| Ma0010 | ออกแบบ | ทำเครื่องหมายแอตทริบิวต์ด้วย attributeUsageattribute | |||
| MA0011 | การใช้งาน | iformatprovider หายไป | |||
| MA0012 | ออกแบบ | อย่าเพิ่มประเภทข้อยกเว้นที่สงวนไว้ | |||
| MA0013 | ออกแบบ | ประเภทไม่ควรขยาย System.ApplicationException | |||
| MA0014 | ออกแบบ | อย่าเพิ่ม System.ApplicationException ประเภท | |||
| Ma0015 | การใช้งาน | ระบุชื่อพารามิเตอร์ในอาร์กิวเมนต์ | |||
| MA0016 | ออกแบบ | ชอบใช้สิ่งที่เป็นนามธรรมของคอลเลกชันแทนการใช้งาน | |||
| MA0017 | ออกแบบ | ประเภทนามธรรมไม่ควรมีตัวสร้างสาธารณะหรือภายใน | |||
| Ma0018 | ออกแบบ | อย่าประกาศสมาชิกคงที่เกี่ยวกับประเภททั่วไป (เลิกใช้แล้วใช้ CA1000 แทน) | |||
| MA0019 | การใช้งาน | ใช้ EventArgs.empty | |||
| MA0020 | ผลงาน | ใช้วิธีการโดยตรงแทนวิธี LINQ | |||
| Ma0021 | การใช้งาน | ใช้ StringComparer.getHashCode แทน string.getHashCode | |||
| MA0022 | ออกแบบ | ส่งคืน task.fromresult แทนการคืนค่า null | |||
| Ma0023 | ผลงาน | เพิ่ม regexoptions.explicitcapture | |||
| MA0024 | การใช้งาน | ใช้ Stringcomparer ที่ชัดเจนเมื่อเป็นไปได้ | |||
| Ma0025 | ออกแบบ | ใช้ฟังก์ชันการทำงานแทนการโยน notimplementedException | |||
| MA0026 | ออกแบบ | แก้ไขความคิดเห็นที่ต้องทำ | |||
| Ma0027 | การใช้งาน | ชอบทบทวนข้อยกเว้นโดยปริยาย | |||
| Ma0028 | ผลงาน | เพิ่มประสิทธิภาพการใช้งาน StringBuilder | |||
| MA0029 | ผลงาน | รวมวิธี LINQ | |||
| Ma0030 | ผลงาน | ลบการสั่งซื้อที่ไร้ประโยชน์โดยการโทร | |||
| Ma0031 | ผลงาน | เพิ่มประสิทธิภาพ enumerable.count () การใช้งาน | |||
| Ma0032 | การใช้งาน | ใช้การโอเวอร์โหลดด้วยอาร์กิวเมนต์ cancellationToken | |||
| Ma0033 | ออกแบบ | อย่าติดแท็กฟิลด์อินสแตนซ์ด้วย threadstaticattribute | |||
| Ma0035 | การใช้งาน | อย่าใช้วิธีการทำเกลียวอันตราย | |||
| Ma0036 | ออกแบบ | ทำให้ชั้นเรียนคงที่ | |||
| Ma0037 | การใช้งาน | ลบคำสั่งที่ว่างเปล่า | |||
| Ma0038 | ออกแบบ | ทำวิธีการคงที่ (เลิกใช้แล้วใช้ CA1822 แทน) | |||
| MA0039 | ความปลอดภัย | อย่าเขียนวิธีการตรวจสอบใบรับรองของคุณเอง | |||
| MA0040 | การใช้งาน | ส่งต่อพารามิเตอร์ cancellationToken ไปยังวิธีการที่ใช้ | |||
| MA0041 | ออกแบบ | ทำคุณสมบัติคงที่ (เลิกใช้แล้วใช้ CA1822 แทน) | |||
| MA0042 | ออกแบบ | อย่าใช้การบล็อกการโทรในวิธีการ Async | |||
| Ma0043 | การใช้งาน | ใช้ชื่อตัวดำเนินการในอาร์กิวเมนต์อาร์กิวเมนต์ | |||
| MA0044 | ผลงาน | ลบการโทรที่ไร้ประโยชน์ | |||
| MA0045 | ออกแบบ | อย่าใช้การบล็อกการโทรในวิธีการซิงค์ (จำเป็นต้องทำการเรียกใช้วิธีการโทร) | |||
| MA0046 | ออกแบบ | ใช้ EventHandler <t> เพื่อประกาศกิจกรรม | |||
| MA0047 | ออกแบบ | ประกาศประเภทในเนมสเปซ | |||
| Ma0048 | ออกแบบ | ชื่อไฟล์ต้องตรงกับชื่อประเภท | |||
| MA0049 | ออกแบบ | ชื่อประเภทไม่ควรจับคู่ที่มีเนมสเปซ | |||
| MA0050 | ออกแบบ | ตรวจสอบข้อโต้แย้งอย่างถูกต้องในวิธี iterator | |||
| Ma0051 | ออกแบบ | วิธีการนานเกินไป | |||
| Ma0052 | ผลงาน | แทนที่ค่าคงที่ enum.toString ด้วยชื่อของ | |||
| Ma0053 | ออกแบบ | ทำให้ชั้นเรียนปิดผนึก | |||
| Ma0054 | ออกแบบ | ฝังข้อยกเว้นที่จับได้ว่าเป็น Innerexception | |||
| Ma0055 | ออกแบบ | อย่าใช้ Finalizer | |||
| Ma0056 | ออกแบบ | อย่าโทรหาสมาชิกที่ใช้งานได้ในคอนสตรัคเตอร์ | |||
| Ma0057 | การตั้งชื่อ | ชื่อคลาสควรลงท้ายด้วย 'แอตทริบิวต์' | |||
| Ma0058 | การตั้งชื่อ | ชื่อคลาสควรจบลงด้วย 'ข้อยกเว้น' | |||
| Ma0059 | การตั้งชื่อ | ชื่อคลาสควรจบลงด้วย 'EventArgs' | |||
| Ma0060 | ออกแบบ | ไม่ได้ใช้ค่าที่ส่งคืนโดย stream.read/stream.readasync | |||
| Ma0061 | ออกแบบ | วิธีการแทนที่ไม่ควรเปลี่ยนค่าเริ่มต้น | |||
| Ma0062 | ออกแบบ | enums ที่ไม่ใช่ flags ไม่ควรทำเครื่องหมายด้วย "flagsattribute" | |||
| Ma0063 | ผลงาน | ใช้ที่ไหนก่อนสั่งซื้อ | |||
| MA0064 | ออกแบบ | หลีกเลี่ยงการล็อคอินสแตนซ์ที่เข้าถึงได้สาธารณะ | |||
| Ma0065 | ผลงาน | ค่าเริ่มต้น valueType.equals หรือ hashcode ใช้สำหรับ struct equality | |||
| MA0066 | ผลงาน | ตารางแฮชประเภทที่ไม่เป็นมิตรใช้ในตารางแฮช | |||
| Ma0067 | ออกแบบ | ใช้ guid.empty | |||
| Ma0068 | ออกแบบ | ชื่อพารามิเตอร์ที่ไม่ถูกต้องสำหรับแอตทริบิวต์ที่เป็นโมฆะ | |||
| Ma0069 | ออกแบบ | ไม่ควรมองเห็นเขตข้อมูลคงที่ที่ไม่ต่อเนื่องกัน | |||
| Ma0070 | ออกแบบ | คุณลักษณะที่ล้าสมัยควรมีคำอธิบาย | |||
| Ma0071 | สไตล์ | หลีกเลี่ยงการใช้ซ้ำซ้อน | |||
| Ma0072 | ออกแบบ | อย่าโยนจากบล็อกในที่สุด | |||
| Ma0073 | สไตล์ | หลีกเลี่ยงการเปรียบเทียบกับค่าคงที่บูล | |||
| Ma0074 | การใช้งาน | หลีกเลี่ยงวิธีการที่ไวต่อวัฒนธรรมโดยนัย | |||
| Ma0075 | ออกแบบ | อย่าใช้ toString ที่ไวต่อวัฒนธรรมโดยนัย | |||
| MA0076 | ออกแบบ | อย่าใช้ toString ที่ไวต่อวัฒนธรรมโดยนัยในสตริงที่ถูกแก้ไข | |||
| MA0077 | ออกแบบ | คลาสที่ให้ Equals (t) ควรใช้ iequatable <t> | |||
| Ma0078 | ผลงาน | ใช้ 'cast' แทน 'Select' เพื่อคัดเลือก | |||
| MA0079 | การใช้งาน | ส่งต่อ cancellationToken โดยใช้. withcancellation () | |||
| Ma0080 | การใช้งาน | ใช้โทเค็นการยกเลิกโดยใช้. withcancellation () | |||
| Ma0081 | ออกแบบ | วิธีการแทนที่ไม่ควรละเว้นคำหลัก | |||
| Ma0082 | ออกแบบ | ไม่ควรใช้ NAN ในการเปรียบเทียบ | |||
| Ma0083 | ออกแบบ | พารามิเตอร์ constructorRgument ควรมีอยู่ในตัวสร้าง | |||
| MA0084 | ออกแบบ | ตัวแปรท้องถิ่นไม่ควรซ่อนสัญลักษณ์อื่น ๆ | |||
| Ma0085 | การใช้งาน | ผู้ได้รับมอบหมายที่ไม่ระบุชื่อไม่ควรใช้เพื่อยกเลิกการสมัครจากเหตุการณ์ | |||
| MA0086 | ออกแบบ | อย่าโยนจาก finalizer | |||
| MA0087 | ออกแบบ | ควรทำเครื่องหมายพารามิเตอร์ที่มี [defaultParameterValue] | |||
| Ma0088 | ออกแบบ | ใช้ [DefaultParameterValue] แทน [defaultValue] | |||
| MA0089 | ผลงาน | ปรับวิธีการใช้วิธีสตริง | |||
| Ma0090 | ออกแบบ | ลบอื่น ๆ ที่ว่างเปล่า/ในที่สุดบล็อก | |||
| Ma0091 | การใช้งาน | ผู้ส่งควรเป็น 'เหตุการณ์นี้' เช่นเหตุการณ์ | |||
| Ma0092 | การใช้งาน | ผู้ส่งควรเป็น 'ว่าง' สำหรับเหตุการณ์คงที่ | |||
| Ma0093 | การใช้งาน | EventArgs ไม่ควรเป็นโมฆะ | |||
| MA0094 | ออกแบบ | คลาสที่ให้ compereto (t) ควรใช้ icomparable <t> | |||
| Ma0095 | ออกแบบ | คลาสที่ใช้ iEquatable <T> ควรแทนที่เท่ากับ (วัตถุ) | |||
| MA0096 | ออกแบบ | คลาสที่ใช้ iComparable <T> ควรใช้ iEquatable <t> | |||
| Ma0097 | ออกแบบ | คลาสที่ใช้ icomparable <t> หรือ iComparable ควรแทนที่ผู้ประกอบการเปรียบเทียบ | |||
| Ma0098 | ผลงาน | ใช้ตัวทำดัชนีแทนวิธี LINQ | |||
| Ma0099 | การใช้งาน | ใช้ค่า enum ที่ชัดเจนแทน 0 | |||
| MA0100 | การใช้งาน | รองานก่อนกำจัดทรัพยากร | |||
| MA0101 | การใช้งาน | สตริงมีจุดสิ้นสุดของอักขระบรรทัดโดยนัย | - | ||
| MA0102 | ออกแบบ | ทำให้สมาชิกอ่านอย่างเดียว | |||
| MA0103 | การใช้งาน | ใช้ SequenceEqual แทนตัวดำเนินการเท่ากัน | |||
| MA0104 | ออกแบบ | อย่าสร้างประเภทที่มีชื่อจาก BCL | |||
| MA0105 | ผลงาน | ใช้พารามิเตอร์แลมบ์ดาแทนการใช้ปิด | |||
| MA0106 | ผลงาน | หลีกเลี่ยงการปิดโดยใช้การโอเวอร์โหลดกับพารามิเตอร์ 'FactoryArgument' | |||
| Ma0107 | ออกแบบ | อย่าใช้วัตถุที่ไวต่อวัฒนธรรม Tostring | |||
| Ma0108 | การใช้งาน | ลบค่าอาร์กิวเมนต์ซ้ำซ้อน | |||
| MA0109 | ออกแบบ | พิจารณาเพิ่มการโอเวอร์โหลดด้วยช่วง <t> หรือหน่วยความจำ <t> | |||
| MA0110 | ผลงาน | ใช้ตัวสร้างแหล่งกำเนิด regex | |||
| MA0111 | ผลงาน | ใช้ string.create แทน formattableString | |||
| MA0112 | ผลงาน | ใช้ 'นับ> 0' แทน 'ใด ๆ ()' | |||
| MA0113 | ออกแบบ | ใช้ dateTime.unixepoch | |||
| MA0114 | ออกแบบ | ใช้ dateTimeOffset.unixepoch | |||
| MA0115 | การใช้งาน | พารามิเตอร์ส่วนประกอบที่ไม่รู้จัก | |||
| MA0116 | ออกแบบ | พารามิเตอร์ที่มี [SupplyParameter FromQuery] ควรทำเครื่องหมายเป็น [พารามิเตอร์] | |||
| MA0117 | ออกแบบ | พารามิเตอร์ที่มี [editorRequired] แอตทริบิวต์ควรทำเครื่องหมายเป็น [พารามิเตอร์] | |||
| MA0118 | ออกแบบ | [jsinvokable] วิธีการสาธารณะจะต้องเป็นสาธารณะ | |||
| MA0119 | ออกแบบ | jsruntime จะต้องไม่ถูกใช้ใน oninitialized หรือ oninitializedasync | |||
| MA0120 | ผลงาน | ใช้ invokevoidasync เมื่อไม่ได้ใช้ค่าที่ส่งคืน | |||
| MA0121 | ออกแบบ | อย่าเขียนทับค่าพารามิเตอร์ | |||
| MA0122 | ออกแบบ | พารามิเตอร์ที่มีแอตทริบิวต์ [SupplyParameter FromQuery] นั้นใช้ได้เฉพาะในส่วนประกอบที่กำหนดเส้นทางได้ (@Page) | |||
| MA0123 | ออกแบบ | หมายเลขลำดับจะต้องเป็นค่าคงที่ | |||
| MA0124 | ออกแบบ | ประเภทพารามิเตอร์บันทึกไม่ถูกต้อง | |||
| MA0125 | ออกแบบ | รายการประเภทพารามิเตอร์บันทึกมีประเภทที่ไม่ถูกต้อง | |||
| MA0126 | ออกแบบ | รายการประเภทพารามิเตอร์ล็อกมีซ้ำ | |||
| MA0127 | การใช้งาน | ใช้ string.equals แทนคือรูปแบบ | |||
| MA0128 | การใช้งาน | ใช้ 'IS' ตัวดำเนินการแทน SequenceEqual | |||
| MA0129 | การใช้งาน | รองานในการใช้คำสั่ง | |||
| MA0130 | การใช้งาน | ไม่ควรใช้ getType () ใน system.type อินสแตนซ์ | |||
| MA0131 | การใช้งาน | ไม่ควรใช้ argentNullexception | |||
| MA0132 | ออกแบบ | อย่าแปลงเป็น dateTimeOffset โดยปริยาย | |||
| MA0133 | ออกแบบ | ใช้ dateTimeOffset แทนที่จะพึ่งพาการแปลงโดยนัย | |||
| MA0134 | การใช้งาน | สังเกตผลลัพธ์ของการโทรแบบ async | |||
| MA0135 | ออกแบบ | พารามิเตอร์บันทึกไม่มีประเภทที่กำหนดค่า | |||
| MA0136 | การใช้งาน | สตริงดิบประกอบด้วยจุดสิ้นสุดของอักขระบรรทัดโดยนัย | - | ||
| MA0137 | ออกแบบ | ใช้คำต่อท้าย 'async' เมื่อวิธีการส่งคืนประเภทที่รอคอยได้ | |||
| MA0138 | ออกแบบ | อย่าใช้คำต่อท้าย 'async' เมื่อวิธีการไม่ส่งคืนประเภทที่รอคอยได้ | |||
| MA0139 | ออกแบบ | ประเภทพารามิเตอร์บันทึกไม่ถูกต้อง | |||
| MA0140 | ออกแบบ | ทั้งสองถ้าสาขาอื่นมีรหัสเหมือนกัน | |||
| MA0141 | การใช้งาน | ใช้การจับคู่รูปแบบแทนตัวดำเนินการไม่เท่าเทียมกันสำหรับการตรวจสอบ null | |||
| MA0142 | การใช้งาน | ใช้การจับคู่รูปแบบแทนตัวดำเนินการที่เท่าเทียมกันสำหรับการตรวจสอบ null | |||
| MA0143 | ออกแบบ | พารามิเตอร์ตัวสร้างหลักควรอ่านอย่างเดียว | |||
| MA0144 | ผลงาน | ใช้ System.OperatingSystem เพื่อตรวจสอบระบบปฏิบัติการปัจจุบัน | |||
| MA0145 | การใช้งาน | ลายเซ็นสำหรับ [unsafeaccessorattribute] วิธีการไม่ถูกต้อง | |||
| MA0146 | การใช้งาน | ชื่อจะต้องตั้งค่าอย่างชัดเจนในฟังก์ชั่นท้องถิ่น | |||
| MA0147 | การใช้งาน | หลีกเลี่ยงวิธี Async Void สำหรับผู้แทน | |||
| MA0148 | การใช้งาน | ใช้การจับคู่รูปแบบแทนตัวดำเนินการที่เท่าเทียมกันสำหรับค่าที่ไม่ต่อเนื่อง | |||
| MA0149 | การใช้งาน | ใช้การจับคู่รูปแบบแทนตัวดำเนินการไม่เท่าเทียมกันสำหรับค่าที่ไม่ต่อเนื่อง | |||
| MA0150 | ออกแบบ | อย่าเรียกวัตถุเริ่มต้นอย่างชัดเจน | |||
| MA0151 | การใช้งาน | DebuggerDisplay ต้องมีสมาชิกที่ถูกต้อง | |||
| MA0152 | ผลงาน | ใช้ UNWRAP แทนที่จะใช้การรอสองครั้ง | |||
| MA0153 | ออกแบบ | อย่าบันทึกสัญลักษณ์ที่ตกแต่งด้วย dataclassificationattribute โดยตรง | |||
| MA0154 | ออกแบบ | ใช้ langword ในความคิดเห็น XML | |||
| MA0155 | ออกแบบ | อย่าใช้วิธี Async Void | |||
| MA0156 | ออกแบบ | ใช้คำต่อท้าย 'async' เมื่อวิธีการส่งคืน iAsyncenumerable <t> | |||
| MA0157 | ออกแบบ | อย่าใช้คำต่อท้าย 'async' เมื่อวิธีการไม่ส่งคืน iAsyncenumerable <t> | |||
| MA0158 | ผลงาน | ใช้ system.threading.lock | |||
| MA0159 | ผลงาน | ใช้ 'คำสั่งซื้อ' แทน 'orderby' | |||
| MA0160 | ผลงาน | ใช้มีคีย์แทน trygetValue | |||
| MA0161 | การใช้งาน | ต้องตั้งค่า USESHELLEXECUTE อย่างชัดเจน | |||
| MA0162 | การใช้งาน | ใช้ process.Start การโอเวอร์โหลดด้วย processStartInfo | |||
| MA0163 | การใช้งาน | UsesheLlexecute จะต้องเป็นเท็จเมื่อเปลี่ยนเส้นทางอินพุตหรือเอาต์พุตมาตรฐาน | |||
| MA0164 | สไตล์ | ใช้วงเล็บเพื่อให้ไม่ชัดเจนขึ้น | |||
| MA0165 | การใช้งาน | ทำสตริงที่มีการแก้ไข | - |
| รหัสประจำตัว | กฎที่ถูกระงับ | การให้เหตุผล |
|---|---|---|
MAS0001 | CA1822 | ระงับ CA1822 เกี่ยวกับวิธีการที่ตกแต่งด้วยคุณสมบัติ BenchMarkDotNet |
MAS0002 | CA1822 | ระงับ CA1822 เกี่ยวกับวิธีการที่ตกแต่งด้วยแอตทริบิวต์ System.Text.json เช่น [JSONPropertyName] หรือ [jsoninclude] |
MAS0003 | ide0058 | ปราบปราม IDE0058 ในประเภทที่รู้จักกันดี |