คำถามติดแท็ก dead-code

18
ฉันจะรู้ได้อย่างไรว่าส่วนใดในรหัสไม่เคยใช้?
ฉันมีรหัส C ++ ดั้งเดิมที่ฉันควรจะเอารหัสที่ไม่ได้ใช้ออก ปัญหาคือรหัสฐานมีขนาดใหญ่ ฉันจะทราบได้อย่างไรว่ารหัสใดไม่เคยถูกเรียกใช้ / ไม่เคยใช้?

21
วิธีค้นหารหัสที่ไม่ได้ใช้ / ไม่ได้ใช้ในโครงการ Java [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ เครื่องมือใดที่คุณใช้เพื่อค้นหาโค้ดที่ไม่ได้ใช้ / ไม่ใช้ในโครงการ java ขนาดใหญ่ ผลิตภัณฑ์ของเราพัฒนามาหลายปีแล้วและมันก็ยากที่จะตรวจจับโค้ดด้วยตนเองที่ไม่ได้ใช้งานอีกต่อไป อย่างไรก็ตามเราพยายามลบรหัสที่ไม่ได้ใช้มากที่สุดเท่าที่จะทำได้ ข้อเสนอแนะสำหรับกลยุทธ์ / เทคนิคทั่วไป (นอกเหนือจากเครื่องมือเฉพาะ) ก็มีค่าเช่นกัน แก้ไข:โปรดทราบว่าเราได้ใช้เครื่องมือครอบคลุมรหัส (Clover, IntelliJ) แล้ว แต่สิ่งเหล่านี้เป็นความช่วยเหลือเล็กน้อย รหัสที่ตายแล้วยังคงมีการทดสอบหน่วยและปรากฏขึ้นตามที่ครอบคลุม ฉันเดาว่าเครื่องมือในอุดมคติจะระบุกลุ่มของรหัสที่มีรหัสอื่นน้อยมากขึ้นอยู่กับมันทำให้สามารถตรวจสอบเอกสารด้วยตนเองได้

4
จะปิดการใช้งานคำเตือนรหัสที่ไม่ได้ใช้ใน Rust ได้อย่างไร
struct SemanticDirection; fn main() {} warning: struct is never used: `SemanticDirection` --> src/main.rs:1:1 | 1 | struct SemanticDirection; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[warn(dead_code)] on by default ฉันจะกลับคำเตือนเหล่านี้อีกครั้งเพื่ออะไรที่ร้ายแรง แต่ฉันแค่ซ่อมมันด้วยภาษาและนี่ทำให้ฉันรู้สึกแย่ ฉันพยายามเพิ่ม#[allow(dead_code)]รหัสของฉัน แต่มันไม่ได้ผล

4
จะค้นหาคลาสที่ไม่ได้ใช้ทั้งหมดใน Intellij Idea ได้อย่างไร
มีการตรวจสอบ "Unused Declaration" ซึ่งสามารถค้นหาโค้ดที่ไม่ได้ใช้ทั้งหมดใน Intellij Idea (ดูคำถามนี้ ) แต่ฉันต้องการค้นหาคลาสที่ไม่ได้ใช้ทั้งหมดไม่ใช่วิธีการตัวแปร ฯลฯเฉพาะคลาส (เป็นการยากที่จะค้นหาเฉพาะคลาสในรายการผลลัพธ์ 3000 รายการ) ฉันจะทำเช่นนั้นได้อย่างไร?

8
สาขาที่มีพฤติกรรมที่ไม่ได้กำหนดสามารถถือว่าไม่สามารถเข้าถึงได้และปรับให้เหมาะสมเป็นรหัสตายได้หรือไม่
พิจารณาข้อความต่อไปนี้: *((char*)NULL) = 0; //undefined behavior มันก่อให้เกิดพฤติกรรมที่ไม่ได้กำหนดไว้อย่างชัดเจน การมีอยู่ของคำสั่งดังกล่าวในโปรแกรมที่กำหนดหมายความว่าโปรแกรมทั้งหมดไม่ได้กำหนดไว้หรือพฤติกรรมนั้นจะไม่ได้กำหนดก็ต่อเมื่อโฟลว์การควบคุมมาถึงคำสั่งนี้ โปรแกรมต่อไปนี้จะถูกกำหนดไว้อย่างดีในกรณีที่ผู้ใช้ไม่เคยป้อนหมายเลข3หรือไม่? while (true) { int num = ReadNumberFromConsole(); if (num == 3) *((char*)NULL) = 0; //undefined behavior } หรือเป็นพฤติกรรมที่ไม่ได้กำหนดโดยสิ้นเชิงไม่ว่าผู้ใช้จะเข้ามา? นอกจากนี้คอมไพเลอร์สามารถสันนิษฐานได้ว่าพฤติกรรมที่ไม่ได้กำหนดจะไม่ถูกดำเนินการในรันไทม์? ซึ่งจะช่วยให้สามารถใช้เหตุผลย้อนหลังได้: int num = ReadNumberFromConsole(); if (num == 3) { PrintToConsole(num); *((char*)NULL) = 0; //undefined behavior } ที่นี่คอมไพเลอร์อาจให้เหตุผลว่าในกรณีที่num == 3เรามักจะเรียกใช้พฤติกรรมที่ไม่ได้กำหนด ดังนั้นกรณีนี้จะต้องเป็นไปไม่ได้และไม่จำเป็นต้องพิมพ์หมายเลข ifคำสั่งทั้งหมดสามารถปรับให้เหมาะสมได้ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.