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.*"
В моем build.sbt
Мне удалось исключить классы, используя следующую строку:
coverageExcludedPackages := "<empty>;.*ExcludeThisClass;.*BuildInfo",
Примечание: начальный <empty>;
потребовалось для него пикап по первому исключению. Не уверен, почему это так, но это соответствует объяснению их readme:
Похоже, вы делаете это правильно, хотя я не совсем знаком с плагином Maven, который вы, похоже, используете.
Дело в том, что когда scoverage исключает файлы, он все равно компилирует классы в них, но не обрабатывает их, что приводит к .class
файл, идентичный тому, который будет создан компиляцией без плагина. Это может сбить вас с толку, чтобы увидеть .class
файлы для классов происходят из исходных файлов, которые вы явно исключили - это, конечно, меня смутило - но именно так работает плагин.
Обновить:
Плагин Scoverage scalac будет пытаться сопоставить пути к файлам с регулярным выражением после удаления .scala
от них; то есть опустить .scala
от вашего регулярного выражения, поскольку он никогда не будет соответствовать ни одному шаблону файла.
Также обратите внимание, что регулярное выражение сопоставляется с путями, а не с именами классов; т.е. использовать /
вместо \.
, Не могу сказать, работает ли это в Windows (если нет, то это ошибка с плагином scalac).