Вопрос

в настоящее время я использую Рцов чтобы получить анализ покрытия кода C0 для проекта Rails, над которым я работаю.

Однако эти результаты практически бессмысленны — у меня 100% покрытие по rcov (поскольку оно охватывает только анализ C0), и я едва написал половину тестовых примеров для существующей на данный момент функциональности.

Я привык к полезным результатам покрытия кода в Visual Studio 2008 Team, который имеет покрытие C1.Существуют ли какие-либо инструменты, обеспечивающие аналогичный охват Ruby?

Это было полезно?

Решение

На данный момент нет никаких инструментов покрытия C1 для Ruby. На самом деле, нет инструментов покрытия, кроме RCov.

До недавнего времени писать подобные инструменты можно было только путем исправления или расширения интерпретатора MRI на C. Поскольку примерно два года назад также можно было расширять JRuby на Java, и с прошлого месяца фактически существует порт RCов для JRuby. Тем не менее, это требует как знания Ruby и C, так и довольно глубоких знаний, потому что возиться с внутренностями МРТ не для слабонервных.

Но только с Rubinius можно будет писать инструменты динамического анализа, такие как инструменты покрытия кода, в самом Ruby, что делает написание инструментов доступным для гораздо большей части сообщества Ruby. Я надеюсь, что это в сочетании с существенной финансовой поддержкой поставщиков инструментов (многие крупные поставщики IDE работают или уже внедрили Ruby IDE, включая CodeGear (бывшая Borland), IntelliJ, NetBeans, Eclipse, SapphireSteel (Ruby in Steel) для Visual Studio) и даже Microsoft) приведет к быстрым инновациям в области инструментов Ruby в 2009 году, и мы увидим такие вещи, как C1, покрытие C2, сложность NPath, гораздо более детальное профилирование и так далее.

До этого единственная идея, которая у меня есть, - использовать инструменты Java. Ребята из JRuby пытаются испускать правильные магические метаданные, чтобы сделать их сгенерированный байт-код как минимум доступным для инструментов Java. Так что, возможно, можно использовать инструменты покрытия Java с JRuby. Однако я понятия не имею, работает ли это на самом деле, и должно ли это работать.

Другие советы

DeepCover является единственным полным инструментом покрытия C1 Ruby, который существует на сегодняшний день.

Раскрытие информации . Я являюсь соавтором DeepCover .

Я не знаю об инструментах покрытия кода, но в Ruby есть тестер мутаций под названием heckle.

Тестирование мутаций включает в себя изменение тестируемого кода и проверку того, приводят ли эти мутации к сбою модульных тестов.

К сожалению, последний официальный гем (версия 1.4.1) содержит некоторые ошибки, поэтому вы можете захотеть собрать гем, используя код из ветки разработки.Он может только изменять методы экземпляра.Я также не уверен, насколько надежна версия ветки разработки.

Мутационного тестирования следует избегать, если тестируемый код потенциально может разрушить систему (например, удалить файлы).Возможно, вы захотите прочитать Часто задаваемые вопросы о хекле и вопрос часто задаваемых вопросов, в котором упоминается rcov и heckle.

Напомним, что в NetBeans 7.0 встроен анализ покрытия кода для Ruby. Я не могу найти никаких документов, объясняющих, является ли это C0 или C1 или нет, но это то, за чем нужно следить.

Старый пост, но я наткнулся на него в поисках инструментов покрытия Ruby. К вашему сведению, я столкнулся с инструментом покрытия C1 для Ruby, который называется single_cov . Не знаю, насколько это хорошо, но я проведу тестовый запуск на днях.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top