Existe um teste de conformidade para compiladores C ++? [fechadas]

21

Existe, em algum lugar, um script, arquivo de origem ou qualquer outra coisa que possa ser usado / acessível livremente, capaz de medir a conformidade de um determinado compilador C ++?

Por exemplo, o teste Acid3 para navegadores: http://acid3.acidtests.org/

Os resultados com os quais eu sonho são uma nota percentual global (ou várias notas, uma para cada padrão, por exemplo, c ++ 98, c ++ 11, c ++ 14 etc.) e, em seguida, testes detalhados com "sucesso" ou "falha" para cada um deles.

Antecedentes: Tive uma discussão em andamento sobre o boost e alguns compiladores desafiados. Meu interlocutor falou sobre o boost ser um projeto acadêmico, porque não funcionará nos principais compiladores C ++, e eu respondi que os compiladores com problemas mentais não deveriam contar. Ser capaz de medir com código a conformidade real de um compilador ajudaria na avaliação do compilador e na descoberta dos "casos de canto" que devem ser evitados no código de plataforma cruzada compilado com eles.

Edição: 22/06/2013

Não é uma resposta, mas, aparentemente, o comitê C ++ está trabalhando no assunto:

SG10, Teste de recursos: Clark Nelson (Intel). Investigação sobre se e como padronizar uma maneira do código portátil verificar se um determinado produto C ++ implementa um recurso ainda, à medida que continuamos estendendo o padrão.

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

paercebal
fonte
Existe o seguinte: peren.com/pages/products_set.htm . Não tentarei uma resposta, pois não a usei e não tenho certeza do seu status na comunidade C ++.
yannis
1
O Boost funciona nos principais compiladores C ++. Talvez não sejam versões antigas desses compiladores, e talvez não em compiladores relativamente obscuros nos quais sua empresa esteja confiando, mas veja a enorme lista de compiladores testados nas notas de versão. E é exatamente isso que os caras do Boost testaram a si mesmos! Boost não faz sentido da palavra acadêmico, e você não precisa avaliar os compiladores para descartar essa declaração.
4
Eu quase caí da cadeira rindo dessa pergunta .... É uma pergunta muito válida, estou interessado aqui nas respostas ..... É 2013 - certamente algo tão fundamental quanto nossas cadeias de ferramentas usam TDD - ou é um caso de "faça o que eu digo, não o que eu faço ......"
mattnz
6
Por que os votos próximos? Eu acredito que esta é uma pergunta muito válida e relevante. A prova de conformidade com os padrões é obrigatória para a maioria das ferramentas usadas pela maioria dos profissionais.
mattnz
1
Penso que este é um dos maiores erros / falhas recorrentes do comitê C ++. Estou impressionado com o fato de muitas pessoas realmente inteligentes continuarem fazendo a mesma coisa idiota repetidamente.

Respostas:

5

Uma maneira de testar a conformidade de um determinado compilador C ++ é executar um (grande) testinguite, ou seja, vários arquivos C ++ que testam todos os aspectos da linguagem.

Os kits de testes bem conhecidos são os kits de teste gcc e llvm. Eles testam todos os tipos de aspectos do compilador, obviamente incluindo a conformidade. No entanto, é difícil avaliar especificamente a conformidade especificamente, pois (pelo que sei) não há relatórios especiais gerados sobre conformidade.

Nesta região você tem:

  • os testes de tortura C do GCC usados ​​para testar o compilador gcc
  • the LLVM testsuite: uma mistura de testes direcionados para o compilador clang e o back-end llvm, além de um conjunto de aplicativos completos para testar o compilador.
  • o teste libcxx do LLVM (parte do repositório libcxx) para testar o suporte ao C ++ 11.

Existem alguns testes completos para testar a conformidade com C / C ++ disponível. Infelizmente, essas são todas as licenças comerciais da ordem de 10k-40k.

  • SuperTeste : O mais extenso desta lista. Aproximadamente 3 milhões de testes direcionados para conformidade com C99, C ++, EmbeddedC, DSP-C.
  • Plum Hall . C e C ++, incluindo a biblioteca C ++. Inclui conformidade com ANSI C, gerador de programa aleatório, modelo de teste e um intérprete de script para controlar o processo geral de teste.
  • Perene . C e C ++.
  • Nullstone . C apenas.
Martijn Rutten
fonte
4

A coisa mais próxima que eu conheço é no contexto de uma versão padrão específica . Da mesma forma, existem postagens de blog que contêm conteúdo semelhante. No entanto, não conheço um corpo, teste ou conjunto de testes de fato ou de jure que decida sobre esses assuntos. Até o isocpp.org não parece ter recursos de conformidade atualmente. O mais próximo que você pode chegar é provavelmente os gráficos de conformidade específicos de cada fornecedor, que são inconsistentes na melhor das hipóteses.

por exemplo , Clang , GCC , MSVC , Intel

Na verdade, existem apenas alguns compiladores competitivos (pelo menos no espaço x86 / x64 - presumo que também seja o caso de plataformas menos populares), mas concordo que seria muito bom ter uma referência, especialmente agora que o padrão é ganhando velocidade.

Joel
fonte
0

Não conheço nenhum teste de padrões, embora o seguinte URL seja o site oficial do site de padrões http://www.open-std.org/jtc1/sc22/wg21/ .

Além disso, muitas coisas encontradas no Boost entram no padrão C ++. Segundo o Dr. Kenneth Sundberg, da Universidade Estadual de Utah.

Também não posso verificar a credibilidade ainda, ainda estou tentando descobrir se é credível, mas o Grupo do Google em https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ afirma que não existe teste oficial.

Travis Pessetto
fonte
Dr. Sundberg? Como no Dr. No ou Dr. Guttenberg?
28--13
4
@ott Não, como em um Ph.D. em Ciência da Computação.
Travis Pessetto