อาจเป็นวิธีที่ดีที่สุดและง่ายที่สุดในการบรรลุสิ่งที่คุณเป็นคือการใช้เครื่องมือวิเคราะห์โค้ดในตัวกับ Visual Studio เพื่อค้นหาและนำคุณไปสู่รหัสที่ตายแล้วและสมาชิกที่ไม่ได้ใช้
ด้วยเหตุนี้ฉันจึงสร้างไฟล์ชุดกฎการวิเคราะห์รหัสใหม่ (ผ่านไฟล์ -> ใหม่ -> ไฟล์ตรวจสอบให้แน่ใจว่าได้เลือกทั่วไปในบานหน้าต่างด้านซ้ายแล้วและเลื่อนลงเพื่อค้นหาชุดกฎการวิเคราะห์โค้ดตั้งชื่อไฟล์จากนั้นค้นหาและ เลือกกฎด้านล่าง) ดูเนื้อหาของไฟล์ ruleset ด้านล่างที่คุณสามารถคัดลอกและวางลงในไฟล์ใหม่ที่มีนามสกุล. ruleset เพื่อใช้
ได้รับไฟล์ ruleset หนึ่งสามารถคลิกขวาบนไฟล์โครงการในExplorer โซลูชันแผงและเลือกProperties ในหน้าต่างคุณสมบัติของโปรเจ็กต์ให้คลิกที่แท็บการวิเคราะห์โค้ดในแผงด้านซ้ายจากนั้นคลิกเปิดเพื่อเรียกดูตำแหน่งของไฟล์. ruleset หากคุณไปที่คุณสมบัติของไฟล์โซลูชัน (ตรงข้ามกับไฟล์โปรเจ็กต์) คุณสามารถตั้งค่าไฟล์การวิเคราะห์โค้ดสำหรับแต่ละโปรเจ็กต์ในโซลูชันได้ในที่เดียว (ภายใต้การตั้งค่าการวิเคราะห์โค้ดและใช้เมนูแบบเลื่อนลงเพื่อเลือก ไฟล์ ruleset หมายเหตุ: ก่อนหน้านี้คุณต้องเคยเรียกดูไฟล์ชุดกฎเพื่อให้ไฟล์นี้ปรากฏในเมนูแบบเลื่อนลงในหน้าต่างคุณสมบัตินี้)
จากนั้นคุณเพียงแค่เรียกใช้การวิเคราะห์โค้ดในโครงการ / โซลูชัน (ผ่านการวิเคราะห์ - > เรียกใช้การวิเคราะห์โค้ดบนโซลูชัน -OR- Alt + F11 ) และจะกลับมาเป็นคำเตือนวิธีการใด ๆ ที่ไม่ได้อ้างอิงหรือสมาชิกที่ไม่ได้ใช้ที่พบ มันจะพบวิธีการที่อ้างอิงโดยวิธีการที่ตัวเองไม่มีการอ้างอิงที่อื่น
อย่างไรก็ตามโปรดระวังเนื่องจากวิธีหนึ่งในการวิเคราะห์โค้ดสำหรับโค้ดที่ตายแล้วอาจทำให้คุณผิดพลาดได้คือหากการอ้างอิงถูก 'ซ่อน' โดยการเรียกใช้เมธอดผ่านตัวแทนเท่านั้นและแน่นอนว่าการสะท้อนกลับ
กฎในการตรวจจับรหัสตายโดยเฉพาะ ได้แก่ :
- เมธอดส่วนตัวที่ไม่ได้เรียกใช้จากรหัสอื่น (CA1811)
- ตัวแปรท้องถิ่นที่ไม่ได้ใช้ (CA1804)
- ช่องส่วนตัวที่ไม่ได้ใช้ (CA1823)
- พารามิเตอร์ที่ไม่ได้ใช้ (CA1801)
- คลาสภายในที่ไม่ได้สร้างอินสแตนซ์จากโค้ดอื่น ๆ (CA1812)
- รหัสตายในสวิตช์แบบบิตหรือ จำกัด (C6259)
ด้านล่างนี้คือเนื้อหาของไฟล์. ruleset ที่สามารถมีได้โดยทำตามขั้นตอนด้านบนเพื่อความสะดวกของคุณ คุณสามารถคัดลอก XML ด้านล่างวางลงใน notepad ++ บันทึกที่ใดที่หนึ่งด้วยนามสกุล. rulesetเรียกดูและใช้ตามที่อธิบายไว้ข้างต้น:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Dead Code Rules" Description=" " ToolsVersion="12.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1801" Action="Warning" />
<Rule Id="CA1804" Action="Warning" />
<Rule Id="CA1811" Action="Warning" />
<Rule Id="CA1812" Action="Warning" />
<Rule Id="CA1823" Action="Warning" />
</Rules>
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6259" Action="Warning" />
</Rules>
</RuleSet>