Apakah ada tes kepatuhan untuk kompiler C ++? [Tutup]

21

Apakah ada, di suatu tempat, skrip yang dapat digunakan / diakses secara bebas, file sumber, atau apa pun, yang dapat mengukur kepatuhan kompiler C ++ yang diberikan?

Misalnya, tes Acid3 untuk browser: http://acid3.acidtests.org/

Hasil yang saya impikan akan menjadi catatan persentase global (atau beberapa catatan, satu untuk setiap standar, misalnya, c ++ 98, c ++ 11, c ++ 14, dll.), Lalu pengujian terperinci dengan "sukses" atau "kegagalan" untuk masing-masing.

Latar belakang: Saya melakukan diskusi di tempat kerja tentang peningkatan dan beberapa penyusun yang ditantang. Teman bicara saya berbicara tentang meningkatkan menjadi proyek akademis, karena itu tidak akan berfungsi di kompiler C ++ utama, dan saya menjawab bahwa kompiler yang mengalami gangguan mental seharusnya tidak masuk hitungan. Mampu mengukur dengan kode kesesuaian sebenarnya dari sebuah kompiler akan membantu baik dalam mengevaluasi kompiler, dan menemukan "kasus sudut" yang harus dihindari dalam kode lintas platform yang dikompilasi dengan mereka.

Edit: 2013-06-22

Bukan jawaban, tetapi tampaknya, komite C ++ sedang mengerjakan subjek:

SG10, Tes Fitur: Clark Nelson (Intel). Investigasi apakah dan bagaimana membakukan cara untuk kode portabel untuk memeriksa apakah suatu produk C ++ tertentu mengimplementasikan fitur, karena kami terus memperluas standar.

Sumber: http://isocpp.org/std/the-committee

paercebal
sumber
Ini dia: peren.com/pages/products_set.htm . Tidak akan mencoba jawaban, karena saya belum menggunakannya dan saya tidak yakin statusnya di komunitas C ++.
yannis
1
Boost bekerja di kompiler C ++ utama. Mungkin bukan versi kuno dari kompiler-kompiler itu, dan mungkin bukan kompiler yang relatif tidak jelas yang diandalkan oleh perusahaan Anda, tetapi lihat saja daftar besar kompiler yang diuji dalam catatan rilis. Dan hanya itu yang Boost kawan uji sendiri! Boost sama sekali tidak memiliki arti akademik, dan Anda tidak perlu mengevaluasi penyusun untuk menolak pernyataan itu.
4
Saya hampir jatuh dari kursi menertawakan pertanyaan ini .... Ini adalah pertanyaan yang sangat valid, saya tertarik ke sini jawabannya ..... Ini 2013 - pasti sesuatu yang mendasar seperti rantai alat kami menggunakan TDD - atau apakah itu kasus "Lakukan apa yang saya katakan, bukan apa yang saya lakukan ......"
mattnz
6
Mengapa memilih dekat? Saya percaya ini adalah pertanyaan yang sangat valid dan relevan. Bukti kepatuhan terhadap standar wajib untuk sebagian besar alat yang digunakan oleh sebagian besar profesional.
mattnz
1
Saya pikir ini adalah salah satu kesalahan / kegagalan berulang terbesar dari komite C ++. Saya kagum banyak orang yang benar-benar pintar terus melakukan hal bodoh yang sama berulang-ulang.

Jawaban:

5

Salah satu cara untuk menguji kepatuhan kompiler C ++ yang diberikan adalah dengan menjalankan testuite (besar), yaitu sekelompok file C ++ yang menguji semua aspek bahasa.

Testuites yang terkenal adalah testuites gcc dan llvm. Ini menguji semua jenis aspek dari kompiler, jelas termasuk kesesuaian. Namun sulit untuk menilai kesesuaian secara khusus karena (sejauh yang saya ketahui) tidak ada laporan khusus yang dihasilkan tentang kesesuaian.

Di dunia ini Anda memiliki:

  • tes penyiksaan GCC yang digunakan untuk menguji kompiler gcc
  • the LLVM testuite: campuran dari tes yang diarahkan untuk compiler dentang dan backend llvm ditambah satu set aplikasi lengkap untuk menguji kompiler.
  • uji libcxx LLVM (bagian dari repositori libcxx) untuk menguji dukungan C ++ 11.

Ada beberapa testuites ekstensif yang menguji kesesuaian C / C ++. Sayangnya ini semua adalah lisensi komersial dalam urutan 10k-40k.

  • SuperTest : Yang paling luas dari daftar ini. Sekitar 3 juta tes terarah menuju kesesuaian C99, C ++, EmbeddedC, DSP-C.
  • Balai Plum . C dan C ++, termasuk pustaka C ++. Termasuk kesesuaian ANSI C, generator program acak, templating pengujian, dan penerjemah skrip untuk mengontrol keseluruhan proses pengujian.
  • Abadi . C dan C ++.
  • Nullstone . C saja.
Martijn Rutten
sumber
4

Hal terdekat yang saya ketahui adalah dalam konteks versi standar tertentu . Demikian pula, ada posting blog yang berisi konten seperti. Namun, saya tidak mengetahui tubuh, tes, atau paket uji de facto atau de jure yang mengatur hal-hal seperti itu. Bahkan isocpp.org tampaknya tidak memiliki sumber daya kesesuaian saat ini. Yang terdekat dengan yang Anda dapatkan mungkin adalah grafik kesesuaian spesifik masing-masing vendor yang paling tidak konsisten.

misalnya Dentang , GCC , MSVC , Intel

Ada benar-benar hanya kompiler kompetitif beberapa (setidaknya di ruang x86 / x64 - Saya berasumsi itu juga kasus untuk platform kurang populer), tapi saya setuju bahwa itu akan sangat bagus untuk memiliki referensi, terutama sekarang bahwa standar adalah menambah kecepatan.

Joel
sumber
0

Saya tidak tahu ada standar pengujian, meskipun URL berikut adalah standar resmi situs comitee http://www.open-std.org/jtc1/sc22/wg21/ .

Juga, banyak hal yang ditemukan di Boost membuat jalan mereka ke dalam standar C ++. Menurut Dr. Kenneth Sundberg dari Utah State University.

Saya juga belum dapat memverifikasi akredibilitasnya, saya masih mencoba mencari tahu apakah itu kredibel, tetapi Google Group di https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ mengklaim bahwa tidak ada tes resmi.

Travis Pessetto
sumber
Dr. Sundberg? Seperti di Dr. No atau Dr. Guttenberg?
ott--
4
@ott Tidak, seperti pada gelar Ph.D. dalam Ilmu Komputer.
Travis Pessetto