Есть ли тест соответствия на компиляторы C ++? [закрыто]

21

Есть ли где-нибудь свободно используемый / доступный скрипт, исходный файл или что-то еще, что может измерить соответствие заданному компилятору C ++?

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

Результатами, о которых я мечтаю, будет глобальная процентная заметка (или несколько заметок, по одной для каждого стандарта, например, c ++ 98, c ++ 11, c ++ 14 и т. Д.), А затем подробные тесты с «успехом» или «провал» для каждого из них.

Фон: у меня была дискуссия о бусте и некоторых проблемных компиляторах. Мой собеседник говорил, что boost - это академический проект, потому что он не будет работать в основных компиляторах C ++, и я ответил, что компиляторы с умственными отклонениями не должны учитываться. Способность измерять с помощью кода фактическое соответствие компилятора поможет как в оценке компилятора, так и в обнаружении «угловых случаев», которых следует избегать в кросс-платформенном коде, скомпилированном с ними.

Изменить: 2013-06-22

Не ответ, но, видимо, комитет C ++ работает над этой темой:

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

Источник: http://isocpp.org/std/the-committee

paercebal
источник
Вот это: 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. Они проверяют всевозможные аспекты компилятора, очевидно, включая соответствие. Тем не менее, особенно сложно оценить соответствие, поскольку (насколько мне известно) нет специальных отчетов о соответствии.

В этом царстве у вас есть:

  • тесты C-пыток в GCC, используемые для проверки компилятора gcc
  • набор тестов LLVM: набор направленных тестов для компилятора clang и бэкенда llvm, а также набор полноценных приложений для тестирования компилятора.
  • тест LLVM libcxx (часть репозитория libcxx) для проверки поддержки C ++ 11.

Существует несколько обширных тестовых наборов для проверки соответствия C / C ++. Увы, это все коммерческие лицензии порядка 10k-40k.

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

Самая близкая вещь, о которой я знаю, находится в контексте определенной стандартной версии . Точно так же есть сообщения в блоге, которые содержат подобное содержание. Тем не менее, я не знаю ни о теле, ни о тесте, ни о де-юре теле-тестах, которые бы руководили такими вопросами. Даже isocpp.org не имеет ресурсов соответствия. Самое близкое, что вы можете получить, это, вероятно, конкретные диаграммы соответствия каждого поставщика, которые в лучшем случае противоречивы.

например, Clang , GCC , MSVC , Intel

В действительности существует всего несколько конкурентоспособных компиляторов (по крайней мере, в пространстве x86 / x64 - я предполагаю, что это также относится и к менее популярным платформам), но я согласен, что было бы очень неплохо иметь ссылку, особенно сейчас, когда стандарт набирает скорость

Joel
источник
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 Нет, как в докторской диссертации в области компьютерных наук.
Тревис Пессетто