Esiste un test di conformità per i compilatori C ++? [chiuso]


21

C'è, da qualche parte, uno script liberamente utilizzabile / accessibile, un file sorgente o qualsiasi altra cosa in grado di misurare la conformità di un determinato compilatore C ++?

Ad esempio, il test Acid3 per browser: http://acid3.acidtests.org/

I risultati che sogno sarebbero una nota percentuale globale (o più note, una per ogni standard, ad esempio c ++ 98, c ++ 11, c ++ 14, ecc.), E quindi test dettagliati con "successo" o "fallimento" per ciascuno di essi.

Background: ho avuto una discussione sul lavoro su boost e alcuni compilatori sfidati. Il mio interlocutore ha parlato del fatto che boost è un progetto accademico, perché non funzionerà nei principali compilatori C ++, e io rispondo che i compilatori con problemi mentali non dovrebbero contare. Essere in grado di misurare con il codice l'effettiva conformità di un compilatore aiuterebbe sia nella valutazione del compilatore, sia nello scoprire i "casi angolari" che dovrebbero essere evitati nel codice multipiattaforma compilato con essi.

Modifica: 22/06/2013

Non una risposta, ma a quanto pare, il comitato C ++ sta lavorando sull'argomento:

SG10, Test di funzionalità: Clark Nelson (Intel). Indagare se e come standardizzare un modo per il codice portatile per verificare se un particolare prodotto C ++ implementa ancora una funzione, mentre continuiamo ad estendere lo standard.

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


C'è questo: peren.com/pages/products_set.htm . Non tenterò una risposta, poiché non l'ho usata e non sono sicuro del suo stato nella comunità C ++.
yannis,

1
Boost funziona nei principali compilatori C ++. Forse non versioni antiche di quei compilatori, e forse non in compilatori relativamente oscuri su cui la tua azienda fa affidamento, ma dai un'occhiata a quell'enorme elenco di compilatori testati nelle note di rilascio. E quelli sono solo quelli che i ragazzi di Boost si sono messi alla prova! Boost non ha alcun senso della parola accademico e non è necessario valutare i compilatori per respingere tale affermazione.

4
Sono quasi caduto dalla sedia ridendo di questa domanda .... È una domanda molto valida, sono interessato a qui le risposte ..... È il 2013 - sicuramente qualcosa di fondamentale come le nostre catene di strumenti usano TDD - o è un caso di "Fai quello che dico, non quello che faccio ......"
mattnz,

6
Perché i voti stretti? Credo che questa sia una domanda molto valida e pertinente. La prova della conformità agli standard è obbligatoria per la maggior parte degli strumenti utilizzati dalla maggior parte dei professionisti.
mattnz,

1
Penso che questo sia uno dei maggiori errori / fallimenti ricorrenti del comitato C ++. Sono stupito che molte persone davvero intelligenti continuino a fare sempre la stessa cosa stupida.

Risposte:


5

Un modo per testare la conformità di un determinato compilatore C ++ consiste nell'eseguire una (grande) suite di test, ovvero un gruppo di file C ++ che testano tutti gli aspetti del linguaggio.

Testuites ben noti sono i testuites gcc e llvm. Questi testano tutti i tipi di aspetti del compilatore, compresa ovviamente la conformità. Tuttavia, è difficile valutare in particolare la conformità, in quanto (per quanto ne so) non ci sono rapporti speciali sulla conformità.

In questo regno hai:

  • i test di tortura C del GCC usati per testare il compilatore gcc
  • la suite di test LLVM: un mix di test diretti per il compilatore clang e il backend llvm più una serie di applicazioni complete per testare il compilatore.
  • il test libcxx LLVM (parte del repository libcxx) per testare il supporto C ++ 11.

Ci sono alcuni testuites estesi che per testare la conformità C / C ++ disponibili. Purtroppo queste sono tutte licenze commerciali nell'ordine di 10k-40k.

  • SuperTest : il più ampio di questo elenco. Circa 3 milioni di test diretti verso conformità C99, C ++, EmbeddedC, DSP-C.
  • Plum Hall . C e C ++, inclusa la libreria C ++. Include conformità ANSI C, generatore di programmi casuali, modello di test e un interprete di scripting per controllare l'intero processo di test.
  • Perenne . C e C ++.
  • Nullstone . Solo C.

4

La cosa più vicina di cui sono a conoscenza è nel contesto di una versione standard specifica . Allo stesso modo, ci sono post sul blog che contengono contenuti simili. Tuttavia, non sono a conoscenza di un corpo di fatto o di diritto, test o suite di test che governa tali questioni. Anche isocpp.org al momento non sembra avere risorse di conformità. Il più vicino che puoi ottenere è probabilmente i grafici di conformità specifici di ogni fornitore che sono incoerenti nella migliore delle ipotesi.

ad esempio Clang , GCC , MSVC , Intel

Esistono davvero solo pochi compilatori competitivi (almeno nello spazio x86 / x64 - suppongo che sia anche il caso di piattaforme meno popolari), ma sono d'accordo che sarebbe molto bello avere un riferimento, soprattutto ora che lo standard è prendendo velocità.


0

Non sono a conoscenza di alcun test sugli standard, anche se il seguente URL è il comitato del sito Web ufficiale degli standard http://www.open-std.org/jtc1/sc22/wg21/ .

Inoltre, molte cose che si trovano in Boost si fanno strada nello standard C ++. Secondo il dott. Kenneth Sundberg della Utah State University.

Inoltre non riesco ancora a verificarne l'accreditabilità, sto ancora cercando di capire se è credibile, ma il gruppo Google su https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ afferma che non esiste alcun test ufficiale.


Dr. Sundberg? Come nel Dr. No o nel Dr. Guttenberg?
ott--

4
@ott No, come in un dottorato di ricerca in informatica.
Travis Pessetto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.