Scoverage, как исключить файлы и пакеты?

Я пытаюсь исключить пакеты и файлы из отчета о проверке.

Однако это не исключает указанные файлы и упакованные.

Я делаю это:

<excludedPackages>*api.test.*</excludedPackages> 
<excludedFiles>.*File.scala</excludedFiles>

Может кто-нибудь подсказать, как это у вас работает?

Ура В.

1 ответ

Аналогично /questions/9258573/sbt-coverage-isklyuchit-ispolzuemyij-v-prilozhenii-play/9258588#9258588

Добавьте следующее к вашему build.sbt файл:

Чтобы исключить пакеты (например, чтобы исключить *api.test.* а также *api.db* пакеты):

coverageExcludedPackages := "<empty>;*api.test.*;*api.db*"

Вы также можете использовать синтаксис для исключения файлов:

coverageExcludedPackages := "*File.scala"

Для вашего конкретного примера вы можете попробовать:

coverageExcludedPackages := "*File.scala;*api.test.*"

Ссылка: https://github.com/scoverage/sbt-scoverage

В моем build.sbt Мне удалось исключить классы, используя следующую строку:

coverageExcludedPackages := "<empty>;.*ExcludeThisClass;.*BuildInfo",

Примечание: начальный <empty>;потребовалось для него пикап по первому исключению. Не уверен, почему это так, но это соответствует объяснению их readme:

Похоже, вы делаете это правильно, хотя я не совсем знаком с плагином Maven, который вы, похоже, используете.

Дело в том, что когда scoverage исключает файлы, он все равно компилирует классы в них, но не обрабатывает их, что приводит к .class файл, идентичный тому, который будет создан компиляцией без плагина. Это может сбить вас с толку, чтобы увидеть .class файлы для классов происходят из исходных файлов, которые вы явно исключили - это, конечно, меня смутило - но именно так работает плагин.

Обновить:

Плагин Scoverage scalac будет пытаться сопоставить пути к файлам с регулярным выражением после удаления .scala от них; то есть опустить .scala от вашего регулярного выражения, поскольку он никогда не будет соответствовать ни одному шаблону файла.

Также обратите внимание, что регулярное выражение сопоставляется с путями, а не с именами классов; т.е. использовать / вместо \., Не могу сказать, работает ли это в Windows (если нет, то это ошибка с плагином scalac).

Другие вопросы по тегам