Независимый от компилятора подход к тестированию мутаций для C/C++/C-подобных языковC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Независимый от компилятора подход к тестированию мутаций для C/C++/C-подобных языков

Сообщение Anonymous »

Существует довольно много фреймворков для мутационного тестирования программ, написанных на C и C++. Большинство из них ожидают, что будет использоваться конкретный компилятор. Чаще всего это Clang на основе LLVM, но возможны и другие варианты.
Это понятно, поскольку генерация мутантов часто основана на проверке конкретного внутреннего представления, созданного конкретной структурой компилятора. Некоторые инструменты даже применяют изменяющие преобразования непосредственно к промежуточному представлению, не возвращая их обратно на уровень исходного кода.
Однако бывают ситуации, когда использование любого компилятора является нецелесообразным. невозможно, и необходимо использовать специальную цепочку инструментов. Несколько примеров:
  • В проекте использовались расширения, специфичные для компилятора. И GCC, и MSVC имеют дополнения, которые отклонены Clang. Среди них множество встроенных функций, различные __attribute__, закрепление регистров с помощью Register asm, встроенный ассемблер в целом, структурированные исключения и т. д.
  • Проект построен с использованием флагов компиляции не понимается Clang, например, -Wsuggest-override и многие другие.
  • Целевая платформа не поддерживается серверной частью Clang.
  • Проект опирается на правильное, но определяемое реализацией поведение, которое различается в зависимости от компилятора.
  • Язык, используемый в программе, не является строго C, но его синтаксис очень близок к C.
    br />
В этих случаях инструмент мутации должен быть отделен от инструментов сборки и не зависеть от них. Он не должен полагаться на компилятор, а сам анализировать и применять мутации к исходному коду.
Конечно, ему придется быть более консервативным в том, какие преобразования он может применить, чтобы сохранить мутанты в порядке. сформированы (т.е. синтаксически корректны и конструктивны). Но еще многое можно сделать.
Есть ли примеры, когда это сработает?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -languages
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»