Чи є тест на відповідність компіляторів C ++? [зачинено]


21

Чи є десь вільно доступний / доступний скрипт, вихідний файл чи інше, який здатний виміряти відповідність даному компілятору C ++?

Наприклад, тест Acid3 для браузерів: http://acid3.acidtests.org/

Результати, про які я мрію, - глобальна відсоткова нота (або кілька нотаток, по одному для кожного стандарту, наприклад, c ++ 98, c ++ 11, c ++ 14 тощо), а потім детальні тести з "успіхом" або "провал" для кожного з них.

Передумови: У мене в роботі було обговорено питання про підвищення та деякі складні компілятори. Мій співрозмовник говорив про те, що стимул є академічним проектом, оскільки він не працюватиме у великих компіляторах C ++, і я відповідав, що компілятори з розумовими труднощами не повинні рахуватися. Можливість вимірювати за допомогою коду фактична відповідність компілятора допомогла б як в оцінці компілятора, так і в виявленні "кутових випадків", яких слід уникати в крос-платформному коді, складеному з ними.

Редагувати: 2013-06-22

Не відповідь, але, мабуть, комітет C ++ працює над цією темою:

SG10, Тест характеристик: Кларк Нельсон (Intel). Дослідження того, чи можна стандартизувати спосіб переносного коду, щоб перевірити, чи певний продукт C ++ реалізує функцію, оскільки ми продовжуємо розширювати стандарт.

Джерело: http://isocpp.org/std/the-committee


Ось це: peren.com/pages/products_set.htm . Не спробую відповісти, оскільки я не використовував її, і не впевнений, що це статус у спільноті C ++.
янніс

1
Boost працює в основних компіляторах C ++. Можливо, не давні версії цих компіляторів, а можливо, і не в порівняно неясних компіляторах, на які покладається ваша компанія, але просто подивіться на той величезний список перевірених компіляторів у примітках до випуску. І це лише ті, кого хлопці з Boost протестували самі! Boost не має сенсу слова академічний, і вам не потрібно оцінювати компілятори, щоб відхилити це твердження.

4
Я ледве не впав зі свого стільця, сміючись з цього питання .... Це дуже вагоме запитання, мені цікаво тут відповіді ..... Це 2013 рік - безумовно, щось таке принципове, як наші ланцюги інструментів використовують TDD - чи це випадок "Робіть те, що я кажу, а не те, що я роблю ......"
mattnz

6
Чому закриті голоси? Я вважаю, що це дуже вагоме і актуальне питання. Підтвердження відповідності стандартам є обов'язковим для більшості інструментів, якими користується більшість фахівців.
mattnz

1
Я думаю, що це одна з найбільших помилок / невдач комітету C ++. Я вражений, що багато справді розумних людей продовжують робити ту саму тупу штуку знову і знову.

Відповіді:


5

Один із способів перевірити відповідність даного компілятора C ++ - це запустити (великий) тестовий набір, тобто купу файлів C ++, які перевіряють усі аспекти мови.

Добре відомими тестовими комплексами є тестові апарати gcc та llvm. Вони перевіряють всі види аспектів компілятора, очевидно, включаючи відповідність. Однак важко особливо оцінити відповідність, оскільки (наскільки мені відомо) немає спеціальних звітів про відповідність.

У цій царині у вас є:

  • тести на тортури GCC, які використовуються для тестування компілятора gcc
  • тестовий набір LLVM: поєднання спрямованих тестів для компілятора кланг-файлів та бекенда llvm плюс набір повноцінних програм для тестування компілятора.
  • тест LLVM libcxx (частина сховища libcxx) для тестування підтримки C ++ 11.

Є кілька обширних тестових наборів, які можна перевірити на відповідність C / C ++. На жаль, це всі комерційні ліцензії порядку 10k-40k.

  • SuperTest : Найширший із цього списку. Приблизно 3 мільйони направлених тестів на відповідність C99, C ++, EmbeddedC, DSP-C.
  • Сливовий зал . C і C ++, включаючи бібліотеку C ++. Включає відповідність ANSI C, генератор випадкових програм, шаблон тестування та інтерпретатор сценаріїв для управління загальним процесом тестування.
  • Багаторічні . C і C ++.
  • Nullstone . Тільки C

4

Найближче, що мені відомо, - це контекст конкретної стандартної версії . Так само є повідомлення в блогах, які містять подібний вміст. Однак мені не відомі фактичні чи де-юре тіло, тест чи тестовий набір, що регулює такі питання. Начебто, навіть isocpp.org наразі не має ресурсів відповідності. Найближчим ви можете отримати, мабуть, специфічні схеми відповідності кожного постачальника, які в кращому випадку невідповідні.

наприклад, Clang , GCC , MSVC , Intel

Насправді є лише кілька конкурентних компіляторів (принаймні у просторі x86 / x64 - я припускаю, що це стосується і менш популярних платформ), але я погоджуюся, що було б дуже приємно мати посилання, особливо зараз, коли стандарт є набираючи швидкість.


0

Я не знаю про тестування стандартів, хоча наступна URL-адреса є офіційним веб-сайтом комітетів стандартів http://www.open-std.org/jtc1/sc22/wg21/ .

Крім того, багато речей, які можна знайти в Boost, проникають у стандарт C ++. За словами доктора Кеннета Сундберга з університету штату Юта.

Я ще не можу перевірити її достовірність, я все ще намагаюся з’ясувати, чи є вона достовірною, але група Google за адресою https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ стверджує, що офіційного тесту не існує.


Доктор Сундберг? Як у доктора Ні чи доктора Гутенберга?
ott--

4
@ott Ні, як у доктора філософії. з інформатики.
Травіс Пессетто
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.