有针对C ++编译器的一致性测试吗?[关闭]


21

是否在某处有一个免费可用/可访问的脚本,源文件或任何可以衡量给定C ++编译器符合性的文件?

例如,针对浏览器的Acid3测试:http : //acid3.acidtests.org/

我梦想的结果将是一个整体百分比注释(或多个注释,每个标准一个注释,例如c ++ 98,c ++ 11,c ++ 14等),然后使用“成功”进行详细测试或“失败”。

背景:我在工作中讨论了boost和一些挑战性的编译器。我的对话者谈到boost是一个学术项目,因为它不能在主要的C ++编译器中使用,我回答说,那些精神上有挑战性的编译器不应该算在内。能够使用代码衡量编译器的实际一致性,将有助于评估编译器,并发现在使用它们编译的跨平台代码中应避免的“拐角情况”。

编辑:2013-06-22

这不是一个答案,但是显然,C ++委员会正在研究该主题:

SG10,功能测试: Clark Nelson(Intel)。随着我们继续扩展该标准,调查是否以及如何标准化可移植代码以检查特定C ++产品是否实现了功能的方式。

资料来源:http : //isocpp.org/std/the-committee


就是这个:peren.com/pages/products_set.htm。不会尝试答案,因为我没有使用过它,并且我不确定它在C ++社区中的地位。
扬尼斯

1
Boost在主要的C ++编译器中工作。也许不是那些编译器的古老版本,也许不是贵公司所依赖的比较晦涩的编译器,但只需在发行说明中查看经过测试的庞大编译器列表即可。而这只是Boost家伙自己测试的!Boost并不是学术术语,您无需评估编译器即可驳斥该声明。

4
我几乎从椅子上掉下来了,嘲笑着这个问题。...这是一个非常有效的问题,我对这里的答案很感兴趣.....现在是2013年-肯定与我们的工具链使用TDD一样重要-还是它“做我说的,不是我做的……”的
案例

6
为什么要收票?我相信这是一个非常有效和相关的问题。大多数专业人士使用的大多数工具都必须证明符合标准。
mattnz

1
我认为这是C ++委员会最经常发生的错误/失败之一。我很惊讶很多真正聪明的人一遍又一遍地做着同样愚蠢的事情。

Answers:


5

测试给定C ++编译器符合性的一种方法是运行(大型)测试套件,即一堆测试该语言各个方面的C ++文件。

众所周知的测试套件是gcc和llvm测试套件。这些测试了编译器的各个方面,显然包括一致性。但是,由于(据我所知)尚无关于一致性的专门报告,因此很难特别专门评估一致性。

在这个领域中,您有:

  • 用于测试gcc编译器的GCC C-torture测试
  • LLVM测试套件:针对clang编译器和llvm后端的定向测试,以及一组用于测试编译器的成熟应用程序。
  • LLVM libcxx测试(libcxx存储库的一部分)以测试C ++ 11支持。

有一些广泛的测试套件可用来测试C / C ++一致性。las,这些都是10k-40k数量级的商业许可证。

  • SuperTest:此列表中最广泛的。大约有300万笔针对C99,C ++,EmbeddedC和DSP-C一致性的定向测试。
  • 梅花厅。C和C ++,包括C ++库。包括符合ANSI C的标准,随机程序生成器,测试模板以及用于控制整个测试过程的脚本解释器。
  • 常年。C和C ++。
  • 空石。仅C。

4

我所知道的最接近的东西是在特定标准版本的上下文中。同样,有些博客帖子包含类似的内容。但是,我不知道在此类事项上具有规则的事实或法律上的主体,测试或测试套件。即使isocpp.org当前似乎也没有一致性资源。您可以获得的最接近的大概是每个供应商的特定一致性图表,这些图表充其量是不一致的。

例如ClangGCCMSVCIntel

确实只有极少数竞争性的编译器(至少在x86 / x64领域中-我认为不太流行的平台也是如此),但是我同意拥有参考将非常好,尤其是现在该标准是加快速度。


0

尽管以下URL是官方标准网站comhttpe http://www.open-std.org/jtc1/sc22/wg21/,但我没有任何标准测试的信息

另外,Boost中发现的许多东西都进入了C ++标准。据犹他州立大学的肯尼斯·桑德伯格博士说。

我也无法验证它的可信性,我仍在尝试确定它是否可信,但是Google Group位于https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++声称不存在官方测试。


桑德伯格博士?像在No博士或Guttenberg博士中一样?
ott--

4
@ott否,与博士学位一样 在计算机科学。
特拉维斯·佩塞托
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.