2012-07-03 4 views
4

Мне нужен инструмент с открытым исходным кодом (даже относительно примитивный), который выполняет Mutation Testing на C++-коде. Я требую, чтобы он был открытым исходным кодом, поскольку мне нужно его модифицировать в доказательство концептуального эксперимента.Испытание мутаций с открытым исходным кодом C++

Я попытался разобраться с ним, но не придумал инструменты с открытым исходным кодом, я придумал this question, но предлагаемые инструменты в ответах либо не являются открытыми, либо не мутируют C++.

ответ

2

Я полагаю, что под «кодом C++» вы подразумеваете что-то, что мутирует исходный код, а не скомпилированную версию? Мутация исходного кода намного сложнее реализовать, чем промежуточная мутация кода (например, байт-код Java или .NET IL). Из-за этого я сильно подозреваю, что вы не найдете открытого исходного кода.

Задача состоит в том, чтобы проанализировать исходный код в виде дерева синтаксиса, сложной проблемы на C++, которая затем позволит вам идентифицировать точки мутации и внести необходимые изменения в исходный код. Вы можете взглянуть на GCCXML как отправную точку с открытым исходным кодом для синтаксического анализа - добавление мутации на самом деле является более простой частью проблемы.

открытого исходный код NinjaTurtles (отказ от ответственности: Я ведущий разработчик на этом) мутируют сборки, скомпилированные из .NET управляемого C++ кода, но я подозреваю, что не будет никакой пользы для вас?

+0

Мне нужно изменить непосредственно скомпилированные сборки C++, поэтому я сомневаюсь, что [NinjaTurtles] (http://www.mutation-testing.net/) подходит для меня. Я готов сам написать мутатор, но в крайнем случае (поскольку, помимо относительной высокой кривой обучения, я уверен, что кто-то еще сделал лучшую работу). Я уже реализовал мутацию на байт-коде Java, используя библиотеку [BCEL] (http://commons.apache.org/bcel/), поэтому я хорошо знаком с процессом. Должен ли я сам реализовать мутатор, я был бы признателен, если бы мог получить пару ссылок на библиотеки, которые манипулируют скомпилированным кодом на C++. – cachiama

+0

Достаточно честный, я подозревал, что уровень IL не был тем, чем вы были. Удачи! –

2

Вы заглянули в двигатель переписывания Клана или их АСТ-совместители? Семантически можно искать определенные пятна в исходном коде, затем применять преобразования и перекомпилировать. Он был разработан для общего источника исходных инструментов и анализа.

Это немного крен, но я думаю, что это определенно работоспособно.