Есть ли эквивалент покрытия кода на уровне сонара для Scala?
Я пытаюсь настроить простые отчеты о покрытии кода для командного кодирования в смешанном Scala/Java прибл. соотношение 90/10 и столкновения с некоторыми серьезными препятствиями. Я ранее настраивал и управлял Sonar с большим успехом командой Java, но, похоже, она не является вариантом.
Сонар w/ Scala плагин неисправен и, по-видимому, поддерживает Scala -одно проекты, а не смешанные.
SCCT интегрируется с нашей сборкой maven, но не работает с ложноотрицательными результатами тестов.
Тайна была моей лучшей удачей; Он интегрируется с нашей сборкой maven и генерирует отчеты, но они не архивируются и не размещаются нигде, как они были бы с Sonar. Там также нет центрального индекса, чтобы упростить навигацию по сгенерированным отчетам.
Я прочитал ответы здесь, в StackOverflow, но они в значительной степени относятся к 2010 году и свидетельствуют о том, что нет подходящего решения. Это изменилось?
Есть ли что-то очевидное, что мне не хватает?
Ответы
Ответ 1
О стороне сонара:
-
да, Scala Сонарный плагин в настоящее время застопорился. Это было инициировано сообществом, но никто не предлагал его принять. Если есть какие-то добровольцы, мы будем рады помочь им и помочь им.
-
относительно поддержки нескольких языков внутри одного проекта, поддержка будет поступать в Sonar. Я не могу дать вам дорожную карту, но мы сейчас думаем о том, как добавить эту поддержку в Sonar в следующих выпусках, так что это краткосрочная проблема.
Ответ 2
Вы можете использовать SCCT или JaCoCo.
- SCCT: он поддерживает Scala до версии 2.10, но разработка, похоже, застопорилась около 9 месяцев. Он поддерживает Scala изначально и работает с обоими, Maven и SBT.
- JaCoCo находится под активным развитием. Он поддерживает любую версию Scala, но не изначально, а на уровне байт-кода. Таким образом, вы можете получить некоторые артефакты, например. некоторый код получает только частичный охват, потому что сгенерированный байт-код имеет некоторый теоретический кодовый путь JaCoCo (но который никогда не может быть выполнен из кода Scala).
JaCoCo может быть немного сложнее настроить с помощью Maven и Scala. Вот несколько трюков:
- Используйте этот вариант с помощью пусковой установки агента. Не используйте вариант с байт-кодом предварительной обработки.
- При использовании JaCoCo с Maven: есть задача Maven (jacoco: prepare-agent), которая создаст правильное выражение для запуска агента и сохранит его в имущество. Затем вы можете использовать это свойство в качестве параметра командной строки при запуске виртуальной машины Java.
- Параметрируйте средство запуска агента, чтобы несколько запусков (например, для запуска разных тестов) записывались в один и тот же файл журнала. Некоторые плагины IDE будут иметь проблемы с разбором такого файла, но плагин JaCoCo Hudson, например, отлично работает.