Gibt es einen Kompatibilitätstest für C ++ - Compiler? [geschlossen]

21

Gibt es irgendwo ein frei verwendbares / zugängliches Skript, eine Quelldatei oder was auch immer, das die Kompatibilität eines bestimmten C ++ - Compilers messen kann?

Zum Beispiel der Acid3-Test für Browser: http://acid3.acidtests.org/

Das Ergebnis, von dem ich träume, ist ein globaler Prozentsatz (oder mehrere Noten, eine für jeden Standard, z. B. C ++ 98, C ++ 11, C ++ 14 usw.) und dann detaillierte Tests mit "Erfolg". oder "Fehler" für jeden von ihnen.

Hintergrund: Ich hatte eine Diskussion über Boost und einige herausgeforderte Compiler. Mein Gesprächspartner sprach davon, dass boost ein akademisches Projekt ist, da es in großen C ++ - Compilern nicht funktioniert, und ich antwortete, dass geistig herausgeforderte Compiler nicht zählen sollten. In der Lage zu sein, die tatsächliche Konformität eines Compilers mit Code zu messen, würde sowohl bei der Bewertung des Compilers als auch bei der Ermittlung der "Eckfälle" helfen, die bei plattformübergreifendem Code, der mit ihnen kompiliert wird, vermieden werden sollten.

Edit: 2013-06-22

Keine Antwort, aber anscheinend arbeitet das C ++ - Komitee an dem Thema:

SG10, Funktionstest: Clark Nelson (Intel). Untersuchung, ob und wie ein Weg für portablen Code standardisiert werden kann, um zu überprüfen, ob ein bestimmtes C ++ - Produkt eine Funktion implementiert, während der Standard weiter ausgebaut wird.

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

paercebal
quelle
Es gibt folgendes: peren.com/pages/products_set.htm . Ich werde keine Antwort versuchen, da ich sie nicht verwendet habe und nicht sicher bin, welchen Status sie in der C ++ - Community hat.
Yannis
1
Boost funktioniert in großen C ++ - Compilern. Vielleicht keine alten Versionen dieser Compiler, und vielleicht nicht in einem vergleichsweise undurchsichtigen Compiler, auf den sich Ihr Unternehmen verlässt, sondern schauen Sie sich nur die riesige Liste der getesteten Compiler in den Versionshinweisen an. Und genau das haben die Boost-Jungs selbst getestet! Boost ist kein akademischer Begriff, und Sie müssen Compiler nicht bewerten, um diese Aussage zu verwerfen.
4
Ich bin fast von meinem Stuhl gefallen und habe mich über diese Frage ausgelacht. Es ist eine sehr berechtigte Frage. Mich interessieren hier die Antworten. Es ist 2013 - mit Sicherheit so grundlegend, wie unsere Werkzeugketten TDD verwenden case of "Tu was ich sage, nicht was ich tue ......"
mattnz
6
Warum die engen Abstimmungen? Ich glaube, das ist eine sehr berechtigte und relevante Frage. Der Nachweis der Einhaltung von Standards ist für die meisten Werkzeuge, die von den meisten Fachleuten verwendet werden, obligatorisch.
Mattnz
1
Ich denke, dies ist einer der größten wiederkehrenden Fehler des C ++ - Komitees. Ich bin erstaunt, dass viele wirklich kluge Leute immer und immer wieder das Gleiche tun.

Antworten:

5

Eine Möglichkeit, die Kompatibilität eines bestimmten C ++ - Compilers zu testen, besteht darin, eine (große) Testsuite auszuführen, dh eine Reihe von C ++ - Dateien, die alle Aspekte der Sprache testen.

Bekannte Testsuiten sind die gcc- und llvm-Testsuiten. Diese testen alle Arten von Aspekten des Compilers, natürlich auch die Konformität. Es ist jedoch schwierig, die Konformität speziell zu bewerten, da meines Wissens keine speziellen Berichte über die Konformität erstellt wurden.

In diesem Bereich haben Sie:

  • die GCC C-Foltertests, die zum Testen des GCC-Compilers verwendet wurden
  • Die LLVM-Testsuite: Eine Mischung aus gezielten Tests für den Clang-Compiler und das llvm-Backend sowie eine Reihe vollwertiger Anwendungen zum Testen des Compilers.
  • Der LLVM-libcxx-Test (Teil des libcxx-Repository) zum Testen der C ++ 11-Unterstützung.

Es gibt einige umfangreiche Testsuiten, mit denen die C / C ++ - Konformität getestet werden kann. Leider sind dies alles kommerzielle Lizenzen in der Größenordnung von 10.000 bis 40.000.

  • SuperTest : Der umfangreichste dieser Liste. Etwa 3 Millionen Tests richteten sich gegen C99-, C ++ -, EmbeddedC- und DSP-C-Konformität.
  • Plum Hall . C und C ++, einschließlich der C ++ - Bibliothek. Enthält ANSI C-Konformität, Zufallsprogrammgenerator, Testvorlagen und einen Skriptinterpretierer zur Steuerung des gesamten Testprozesses.
  • Mehrjährig . C und C ++.
  • Nullstone . C nur.
Martijn Rutten
quelle
4

Mir ist am nächsten bewusst, dass es sich um eine bestimmte Standardversion handelt . Ebenso gibt es Blogposts , die ähnliche Inhalte enthalten. Mir ist jedoch keine de facto oder de jure Stelle, kein Test oder keine Testsuite bekannt, die solche Angelegenheiten regeln. Sogar isocpp.org scheint derzeit keine Ressourcen für Konformität zu haben. Am ehesten können Sie die spezifischen Konformitätstabellen der einzelnen Anbieter ermitteln, was bestenfalls inkonsistent ist.

zB Clang , GCC , MSVC , Intel

Es gibt wirklich nur wenige kompetitive Compiler (zumindest im x86 / x64-Bereich - ich nehme an, dass dies auch für weniger beliebte Plattformen der Fall ist), aber ich stimme zu, dass es sehr schön wäre, eine Referenz zu haben, besonders jetzt, wo der Standard ist Geschwindigkeit aufnehmen.

Joel
quelle
0

Ich kenne keine Normenprüfungen, obwohl die folgende URL die offizielle Normenwebsite des Komitees http://www.open-std.org/jtc1/sc22/wg21/ ist .

Viele Dinge, die in Boost zu finden sind, finden Eingang in den C ++ - Standard. Laut Dr. Kenneth Sundberg von der Utah State University.

Ich kann die Richtigkeit der Informationen auch noch nicht überprüfen. Ich versuche immer noch herauszufinden, ob sie glaubwürdig sind, aber die Google-Gruppe unter https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ behauptet, dass kein offizieller Test existiert.

Travis Pessetto
quelle
Dr. Sundberg? Wie bei Dr. No oder Dr. Guttenberg?
ott--
4
@ott Nein, wie bei einem Ph.D. in Informatik.
Travis Pessetto