C ++ derleyicileri için bir uyumluluk testi var mı? [kapalı]


21

Bir yerde, verilen bir C ++ derleyicisinin uygunluğunu ölçebilecek serbestçe kullanılabilir / erişilebilir bir komut dosyası, kaynak dosya ya da her neyse var mı?

Örneğin, tarayıcılar için Acid3 testi: http://acid3.acidtests.org/

Hayal ettiğim sonuçlar genel bir yüzde notu (veya her bir standart için bir tane, örneğin, c ++ 98, c ++ 11, c ++ 14, vb.) Ve sonra "başarı" ile ayrıntılı testler olacaktır. veya her biri için "başarısızlık".

Arka plan: İşyerinde destek ve bazı zorlayıcı derleyiciler hakkında bir tartışma yaptım. Konuşmacım, akademik bir proje olmasından bahsetti, çünkü büyük C ++ derleyicilerinde işe yaramayacak ve zihinsel engelli derleyicilerin sayılmaması gerektiğine cevap veriyorum. Bir derleyicinin gerçek uygunluğunu kodla ölçebilmek hem derleyiciyi değerlendirmede hem de onlarla derlenen platformlar arası kodda kaçınılması gereken "köşe hallerini" keşfetmeye yardımcı olacaktır.

Düzenleme: 2013-06-22

Cevap değil, ama görünüşe göre, C ++ komitesi konu üzerinde çalışıyor:

SG10, Özellik Testi: Clark Nelson (Intel). Standardı genişletmeye devam ettikçe, belirli bir C ++ ürününün henüz bir özellik uygulayıp uygulamadığını kontrol etmek için portatif kod için bir yöntemi standart hale getirip getirmemek ve nasıl standartlaştıracağınızı araştırmak.

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


İşte bu: peren.com/pages/products_set.htm . Kullanmayacağım ve C ++ topluluğundaki durumundan emin olamadığım için bir cevap girişiminde bulunmayacağım.
yannis

1
Boost, büyük C ++ derleyicilerinde çalışır. Belki de bu derleyicilerin eski sürümleri değil ve belki de şirketinizin güvendiği nispeten karanlık bir derleyicide değil , sürüm notlarındaki test edilmiş derleyiciler listesine bakın . Ve bu sadece Boost adamlarının kendilerini test ettiği kişiler! Boost, akademik kelimesi anlamında değildir ve bu ifadeyi reddetmek için derleyicileri değerlendirmenize gerek yoktur.

4
Neredeyse bu soruya gülmek için sandalyemden düşüyordum .... Bu çok geçerli bir soru, cevapları burada ilgileniyorum… 2013 - kesinlikle alet zincirlerimizin TDD kullandığı kadar temel bir şey - ya da "Söylediklerimi yapın, yaptığım şeyi değil ......"
davası

6
Neden yakın oyla? Bunun çok geçerli ve alakalı bir soru olduğuna inanıyorum. Çoğu profesyoneller tarafından kullanılan çoğu araç için standartlara uygunluk kanıtı zorunludur.
mattnz

1
Bence bu, C ++ komitesinin en büyük tekrarlanan hatalarından / başarısızlıklarından biri. Gerçekten çok zeki insanların aynı aptal şeyi tekrar tekrar yapmaya devam etmelerine şaşırdım.

Yanıtlar:


5

Belirli bir C ++ derleyicisinin uyumluluğunu test etmenin bir yolu, (büyük) bir testsuite, yani dilin tüm yönlerini test eden bir grup C ++ dosyası çalıştırmaktır.

İyi bilinen testit'ler gcc ve llvm testitleridir. Bunlar, derleyicinin her türlü yönünü, uygunluk dahil, açıkça test eder. Ancak, özellikle (bildiğim kadarıyla) uygunluk konusunda oluşturulan özel raporlar olmadığı için uygunluğu özellikle değerlendirmek zordur.

Bu alanda sizde:

  • gcc derleyicisini test etmek için kullanılan GCC C işkence testleri
  • LLVM testsuite: clang derleyicisi ve llvm arka ucu ve derleyiciyi test etmek için tam teşekküllü uygulamalar kümesi için yönlendirilmiş testlerin bir karışımı.
  • C ++ 11 desteğini test etmek için LLVM libcxx testi (libcxx deposunun bir parçası).

C / C ++ uygunluğunu test etmek için bazı geniş test formları mevcuttur. Ne yazık ki, bunlar 10k-40k düzeninde tüm ticari lisanslardır.

  • En Süper Test : Bu listenin en kapsamı . Kabaca 3 milyon C99, C ++, Embedded C, DSP-C uygunluğuna yönelik testler yapıldı.
  • Plum Salonu . C ve C ++, C ++ kütüphanesi dahil. Genel test sürecini kontrol etmek için ANSI C uygunluğu, rastgele program üreticisi, test şablonu ve bir komut dosyası yorumlayıcısı içerir.
  • Çok yıllık . C ve C ++.
  • Boştaşı . Sadece C

4

Bildiğim en yakın şey , belirli bir standart sürümün içeriğinde . Benzer şekilde, benzer içerik içeren blog gönderileri de var. Bununla birlikte, bu tür konularda kurallara uymayan bir fiili veya jürinin, test veya test paketinin farkında değilim. İsocpp.org bile şu anda uygunluk kaynaklarına sahip görünmüyor. Alabileceğiniz en yakın muhtemelen her satıcının en iyi şekilde tutarsız olan belirli uyumluluk çizelgeleri olabilir.

örneğin, Clang , GCC , MSVC , Intel

Gerçekten sadece birkaç rekabetçi derleyici var (en azından x86 / x64 alanında - daha az popüler platformlar için de geçerli olduğunu varsayıyorum), fakat özellikle şimdi standart olan bir referans bulmanın çok iyi olacağını kabul ediyorum hızlanıyor.


0

Herhangi bir standart testinden habersiz, ancak aşağıdaki URL, http://www.open-std.org/jtc1/sc22/wg21/ adresindeki resmi standartlar web sitesi komitesidir .

Ayrıca, Boost'ta bulunan birçok şey C ++ standardına giriyor. Utah Eyalet Üniversitesi'nden Dr. Kenneth Sundberg'e göre.

Ayrıca henüz güvenilirliğini doğrulayamıyorum, hala güvenilir olup olmadığını anlamaya çalışıyorum, ancak Google Grubu https://groups.google.com/forum/?fromgroups#!forum/comp.std adresinde .c ++ , resmi bir test olmadığını iddia ediyor.


Sundberg? No veya Dr. Guttenberg'deki gibi mi?
ott

4
@ott No, doktorata olduğu gibi Bilgisayar Bilimleri.
Travis Pessetto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.