มีการทดสอบการปฏิบัติตามสำหรับคอมไพเลอร์ C ++ หรือไม่ [ปิด]


21

มีที่ไหนสักแห่งสคริปต์ที่ใช้งานได้ / สามารถเข้าถึงได้อย่างอิสระไฟล์ต้นฉบับหรืออะไรก็ตามที่สามารถวัดการปฏิบัติตามคอมไพเลอร์ C ++ ที่กำหนดได้หรือไม่?

ตัวอย่างเช่นการทดสอบ Acid3 สำหรับเบราว์เซอร์: http://acid3.acidtests.org/

ผลลัพธ์ที่ฉันใฝ่ฝันจะเป็นบันทึกเปอร์เซ็นต์ทั่วโลก (หรือหลายบันทึกย่อหนึ่งรายการสำหรับแต่ละมาตรฐานเช่น c ++ 98, c ++ 11, c ++ 14, ฯลฯ ) แล้วทดสอบรายละเอียดด้วย "สำเร็จ" หรือ "ล้มเหลว" สำหรับแต่ละรายการ

ที่มา: ฉันมีการสนทนาเกี่ยวกับการส่งเสริมและคอมไพเลอร์ที่ท้าทายบางอย่าง คู่สนทนาของฉันพูดถึงการส่งเสริมเป็นโครงการวิชาการเพราะมันจะไม่ทำงานในคอมไพเลอร์ C ++ ที่สำคัญและฉันตอบว่าคอมไพเลอร์ที่มีปัญหาทางจิตใจไม่ควรนับ ความสามารถในการวัดด้วยรหัสความสอดคล้องที่แท้จริงของคอมไพเลอร์จะช่วยทั้งในการประเมินคอมไพเลอร์และการค้นพบ "มุมกรณี" ที่ควรหลีกเลี่ยงในโค้ดข้ามแพลตฟอร์มที่คอมไพล์ด้วย

แก้ไข: 2013-06-22

ไม่ใช่คำตอบ แต่เห็นได้ชัดว่าคณะกรรมการ C ++ กำลังทำงานในเรื่อง:

SG10, การทดสอบคุณสมบัติ: Clark Nelson (Intel) ตรวจสอบว่ามาตรฐานสำหรับรหัสพกพาเพื่อตรวจสอบว่าผลิตภัณฑ์ C ++ เฉพาะใช้คุณลักษณะได้หรือไม่ในขณะที่เรายังคงขยายมาตรฐานต่อไป

ที่มา: http://isocpp.org/std/the-committee


: มีนี้เป็นperen.com/pages/products_set.htm จะไม่พยายามคำตอบเพราะฉันไม่ได้ใช้และฉันไม่แน่ใจว่าเป็นสถานะในชุมชน C ++
yannis

1
Boost ทำงานในคอมไพเลอร์ C ++ ที่สำคัญ อาจไม่ใช่คอมไพเลอร์เวอร์ชันเก่าและอาจไม่ได้อยู่ในคอมไพเลอร์ที่คลุมเครือ บริษัท ของคุณกำลังพึ่งพา แต่ดูที่รายการคอมไพเลอร์ที่ผ่านการทดสอบขนาดใหญ่ในบันทึกย่อประจำรุ่น และนั่นเป็นเพียงสิ่งที่พวก Boost ได้ทดสอบด้วยตัวเอง! การเพิ่มประสิทธิภาพนั้นไม่มีความหมายของคำวิชาการและคุณไม่จำเป็นต้องประเมินคอมไพเลอร์เพื่อยกเลิกคำสั่งนั้น

4
ฉันเกือบจะตกเก้าอี้หัวเราะกับคำถามนี้ .... มันเป็นคำถามที่ถูกต้องมากฉันสนใจคำตอบที่นี่ ..... มันถึงปี 2013 - แน่นอนว่าบางสิ่งเป็นพื้นฐานที่โซ่เครื่องมือของเราใช้ TDD - หรือเป็น กรณีของ "ทำในสิ่งที่ฉันพูดไม่ใช่สิ่งที่ฉันทำ ...... "
mattnz

6
ทำไมการโหวตอย่างใกล้ชิด? ฉันเชื่อว่านี่เป็นคำถามที่ถูกต้องและเกี่ยวข้องมาก หลักฐานการปฏิบัติตามมาตรฐานเป็นสิ่งจำเป็นสำหรับเครื่องมือส่วนใหญ่ที่ใช้โดยมืออาชีพส่วนใหญ่
mattnz

1
ฉันคิดว่านี่เป็นหนึ่งในความผิดพลาด / การล้มเหลวที่ยิ่งใหญ่ที่สุดของคณะกรรมการ C ++ ฉันประหลาดใจกับคนที่ฉลาดจริง ๆ จำนวนมากที่ทำสิ่งที่เหมือนกันซ้ำ ๆ

คำตอบ:


5

วิธีหนึ่งในการทดสอบความสอดคล้องของคอมไพเลอร์ C ++ ที่กำหนดคือการเรียกใช้งาน Testuite (ใหญ่) คือไฟล์ C ++ ที่ทดสอบทุกแง่มุมของภาษา

Testuites ที่รู้จักกันดีคือ gcc และ llvm testsuites การทดสอบเหล่านี้ทุกด้านของคอมไพเลอร์อย่างชัดเจนรวมถึงความสอดคล้อง อย่างไรก็ตามเป็นการยากที่จะประเมินความสอดคล้องเป็นพิเศษโดยเฉพาะอย่างยิ่ง (เพื่อความรู้ที่ดีที่สุดของฉัน) ไม่มีรายงานพิเศษใด ๆ

ในอาณาจักรนี้คุณมี:

  • การทดสอบการทรมาน C ของ GCC ที่ใช้ในการทดสอบคอมไพเลอร์ gcc
  • LLVM testsuite: การผสมผสานของการทดสอบโดยตรงสำหรับ clang compiler และ llvm backend plus ชุดของแอพพลิเคชั่นเต็มรูปแบบเพื่อทดสอบคอมไพเลอร์
  • การทดสอบ LLVM libcxx (ส่วนหนึ่งของที่เก็บ libcxx) เพื่อทดสอบการสนับสนุน C ++ 11

มีบางส่วนที่ครอบคลุม testuites ที่จะทดสอบความสอดคล้อง C / C ++ ใช้ได้ อนิจจาเหล่านี้เป็นใบอนุญาตเชิงพาณิชย์ทั้งหมดในคำสั่งของ 10k-40k

  • SuperTest : รายการที่ครอบคลุมมากที่สุด มีการทดสอบประมาณ 3 ล้านครั้งสำหรับ C99, C ++, EmbeddedC, DSP-C
  • พลัมฮอลล์ C และ C ++ รวมถึงไลบรารี C ++ รวมถึงความสอดคล้อง ANSI C โปรแกรมตัวสร้างแบบสุ่มการทดสอบเทมเพลตและตัวแปลสคริปต์เพื่อควบคุมกระบวนการทดสอบโดยรวม
  • ตลอดกาล C และ C ++
  • Nullstone C เท่านั้น

4

สิ่งที่อยู่ใกล้ฉันรู้อยู่ในบริบทของรุ่นมาตรฐานที่เฉพาะเจาะจง ในทำนองเดียวกันมีโพสต์บล็อกที่มีเนื้อหาเหมือนกัน อย่างไรก็ตามฉันไม่ได้ตระหนักถึงพฤตินัยหรือร่างทางกฎหมายการทดสอบหรือชุดทดสอบที่มีกฎเกณฑ์ในเรื่องดังกล่าว แม้แต่isocpp.orgก็ยังไม่มีทรัพยากรที่สอดคล้องกันในขณะนี้ สิ่งที่ใกล้เคียงที่สุดที่คุณจะได้รับคือแผนภูมิความสอดคล้องเฉพาะของผู้ขายแต่ละรายซึ่งไม่สอดคล้องกันมากที่สุด

เช่นClang , GCC , MSVC , Intel

มีคอมไพเลอร์คู่แข่งเพียงไม่กี่ตัว (อย่างน้อยในพื้นที่ x86 / x64 - ฉันคิดว่ามันเป็นกรณีของแพลตฟอร์มที่ได้รับความนิยมน้อยกว่า) แต่ฉันยอมรับว่ามันจะดีมากถ้ามีการอ้างอิงโดยเฉพาะตอนนี้มาตรฐานคือ ยกขึ้นความเร็ว


0

ผมไม่รู้มาตรฐานใดทดสอบแม้ว่า URL ต่อไปนี้อย่างเป็นทางการ comitee มาตรฐานเว็บไซต์http://www.open-std.org/jtc1/sc22/wg21/

นอกจากนี้ยังมีหลายสิ่งที่พบใน Boost ทำให้เข้าสู่มาตรฐาน C ++ ตามที่ดร. เคนเน็ ธ Sundberg จากมหาวิทยาลัยแห่งรัฐยูทาห์

ฉันยังไม่สามารถยืนยันความน่าเชื่อถือของมันได้ฉันยังคงพยายามหาว่ามันน่าเชื่อถือหรือไม่ แต่เป็น Google Group ที่https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++อ้างว่าไม่มีการทดสอบอย่างเป็นทางการ


ดร. Sundberg เหมือนใน Dr. No หรือ Dr. Guttenberg
ott--

4
@ott ไม่เป็นในปริญญาเอก ในสาขาวิทยาศาสตร์คอมพิวเตอร์
เทรวิส Pessetto
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.