Подтвердить что ты не робот

Инструменты покрытия кода для Scala

Каковы доступные инструменты покрытия кода для Scala?

У меня есть тесты Scala и настройка непрерывной интеграции Хадсона. Есть ли что-то, что я могу подключить к этой настройке для измерения и отслеживания покрытия кода?

4b9b3361

Ответ 1

SCCT - это плагин-компилятор, который позволяет классам собирать данные о покрытии:

http://mtkopone.github.com/scct/

Ответ 2

Я использую Cobertura. Однако любой инструмент покрытия Java должен работать нормально. Единственный улов в том, что вы получите большое количество автоматически сгенерированных классов в вашем списке покрытия. Это связано с тем, что в то время как Scala компилируется в очень естественный байт-код JVM, он вынужден создавать неестественно большое количество классов для размещения общих функциональных функций, таких как ленивая оценка.

Ответ 3

Undercover немного лучше.

Ответ 4

Одна проблема с не-основными языками (например, Scala) заключается в том, что инструменты трудно найти, потому что их сложно построить.

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

Мы внедрили инструменты для покрытия объектов для Java, С#, COBOL, C, С++, PL/SQL,... таким образом, включая инструменты, сбор данных и отображение охвата тестирования и отчетность. Было бы просто реализовать Scala как это.

Решения, создаваемые другими ответами, создают путаную информацию из реализации Scala ( "авторазработанные классы" ). То, что разработчики хотят видеть, - это данные покрытия с точки зрения их кода. Подход, который мы используем, использует исходный код, поэтому результаты указаны полностью и только с точки зрения исходного кода; даже просмотрщик охвата тестирования показывает исходный код, покрытый информацией о покрытии.

Ответ 5

Я собрал плагин SBT под названием xsbt-coveralls-plugin, который использует scct под капотом, но публикует результаты http://coveralls.io.

Отказ от ответственности: Я только что построил этот плагин вчера (10 марта 2013 года), поэтому не ожидайте, что он будет идеальным, но отправите ошибки и запросы функций на страницу github

Тем не менее, хорошо, если вы хотите, чтобы отчеты о покрытиях были общедоступными. Посмотрите пример результатов здесь

Ответ 6

Я использую jacoco. Он не требует компиляции или времени выполнения, классы инструментов на лету без специальной фазы аппаратуры.

Также он интегрирован с Sonar и опубликован на Maven Central.

Вот пример: https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

Я хотел бы добавить лучшую отчетность: более подробное распределение охвата веток makrup, исключение генерируемых классов/методов и быть удобными, например, ScalaDoc (см., например, отчеты SCCT)