Existe-t-il un test de conformité pour les compilateurs C ++? [fermé]

21

Existe-t-il, quelque part, un script, un fichier source ou autre, librement utilisable / accessible, capable de mesurer la conformité d'un compilateur C ++ donné?

Par exemple, le test Acid3 pour les navigateurs: http://acid3.acidtests.org/

Les résultats dont je rêve seraient une note de pourcentage globale (ou plusieurs notes, une pour chaque norme, par exemple, c ++ 98, c ++ 11, c ++ 14, etc.), puis des tests détaillés avec "succès" ou "échec" pour chacun d'eux.

Contexte: J'ai eu une discussion au travail sur le boost et certains compilateurs contestés. Mon interlocuteur a parlé de boost étant un projet académique, car cela ne fonctionnera pas dans les principaux compilateurs C ++, et moi répondant que les compilateurs mentalement handicapés ne devraient pas compter. Être capable de mesurer avec du code la conformité réelle d'un compilateur aiderait à la fois à évaluer le compilateur et à découvrir les "cas d'angle" qui devraient être évités dans le code multiplateforme compilé avec eux.

Modifier: 2013-06-22

Pas une réponse, mais apparemment, le comité C ++ travaille sur le sujet:

SG10, Test de fonctionnalité: Clark Nelson (Intel). Enquête pour savoir si et comment normaliser un moyen pour le code portable de vérifier si un produit C ++ particulier implémente encore une fonctionnalité, alors que nous continuons d'étendre la norme.

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

paercebal
la source
Il y a ceci: peren.com/pages/products_set.htm . Je n'essaierai pas de réponse, car je ne l'ai pas utilisé et je ne suis pas sûr de son statut dans la communauté C ++.
yannis
1
Boost fonctionne dans les principaux compilateurs C ++. Peut-être pas des versions anciennes de ces compilateurs, et peut-être pas dans des compilateurs relativement obscurs sur lesquels votre entreprise s'appuie, mais regardez simplement cette énorme liste de compilateurs testés dans les notes de publication. Et ce ne sont que ceux que les gars de Boost se sont testés! Boost n'est en aucun cas le mot académique, et vous n'avez pas besoin d'évaluer les compilateurs pour rejeter cette déclaration.
4
J'ai failli tomber de ma chaise en riant de cette question .... C'est une question très valable, je suis intéressé par les réponses ..... C'est 2013 - sûrement quelque chose d'aussi fondamental que nos chaînes d'outils utilisent TDD - ou est-ce un cas de "Faites ce que je dis, pas ce que je fais ..."
mattnz
6
Pourquoi les votes serrés? Je pense que c'est une question très valable et pertinente. Une preuve de conformité aux normes est obligatoire pour la plupart des outils utilisés par la plupart des professionnels.
mattnz
1
Je pense que c'est l'une des plus grandes erreurs / échecs récurrents du comité C ++. Je suis étonné que beaucoup de gens vraiment intelligents continuent de faire la même chose stupide encore et encore.

Réponses:

5

Une façon de tester la conformité d'un compilateur C ++ donné est d'exécuter une (grande) suite de tests, c'est-à-dire un tas de fichiers C ++ qui testent tous les aspects du langage.

Les suites de tests bien connues sont les suites de tests gcc et llvm. Ceux-ci testent toutes sortes d'aspects du compilateur, y compris évidemment la conformité. Cependant, il est difficile d'évaluer particulièrement la conformité, car (à ma connaissance), aucun rapport spécial n'est généré sur la conformité.

Dans ce domaine, vous avez:

  • les tests GCC C-torture utilisés pour tester le compilateur gcc
  • la LLVM testsuite: un mélange de tests dirigés pour le compilateur clang et le backend llvm plus un ensemble d'applications à part entière pour tester le compilateur.
  • le test LLVM libcxx (qui fait partie du référentiel libcxx) pour tester la prise en charge de C ++ 11.

Il existe de nombreuses suites de tests pour tester la conformité C / C ++. Hélas, ce sont toutes des licences commerciales de l'ordre de 10k-40k.

  • SuperTest : le plus complet de cette liste. Environ 3 millions de tests dirigés vers la conformité C99, C ++, EmbeddedC, DSP-C.
  • Plum Hall . C et C ++, y compris la bibliothèque C ++. Comprend la conformité ANSI C, un générateur de programme aléatoire, un modèle de test et un interpréteur de script pour contrôler le processus de test global.
  • Vivace . C et C ++.
  • Nullstone . C seulement.
Martijn Rutten
la source
4

La chose la plus proche que je connaisse est dans le contexte d'une version standard spécifique . De même, il existe des articles de blog qui contiennent un contenu similaire. Cependant, je ne connais pas de corps, de test ou de suite de facto ou de jure qui se prononce sur ces questions. Même isocpp.org ne semble pas avoir de ressources de conformité actuellement. Le plus proche que vous pouvez obtenir est probablement les tableaux de conformité spécifiques à chaque fournisseur, ce qui est au mieux incohérent.

par exemple Clang , GCC , MSVC , Intel

Il n'y a vraiment que quelques compilateurs compétitifs (au moins dans l'espace x86 / x64 - je suppose que c'est aussi le cas pour les plates-formes moins populaires), mais je conviens qu'il serait très agréable d'avoir une référence, surtout maintenant que la norme est prendre de la vitesse.

Joel
la source
0

Je ne suis au courant d'aucun test de normalisation, bien que l'URL suivante soit le site officiel du comité de normalisation http://www.open-std.org/jtc1/sc22/wg21/ .

De plus, beaucoup de choses trouvées dans Boost font leur chemin dans la norme C ++. Selon le Dr Kenneth Sundberg de l'Université d'État de l'Utah.

Je ne peux pas non plus en vérifier l'accréditation pour le moment, j'essaie toujours de déterminer si elle est crédible, mais le groupe Google à https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ prétend qu'aucun test officiel n'existe.

Travis Pessetto
la source
Dr Sundberg? Comme chez le Dr No ou le Dr Guttenberg?
ott--
4
@ott Non, comme dans un doctorat. en informatique.
Travis Pessetto