#scala #sonarqube #sbt
#scala #sonarqube #sbt
Вопрос:
я использую sonarQube-8.5.1.38104
и использую его в своем проекте scala и перешел по этой ссылке, вот мой plugins.sbt
файл
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1")
addSbtPlugin("com.github.mwz" % "sbt-sonar" % "2.2.0")
и вот мой build.sbt
файл
import sbtsonar.SonarPlugin.autoImport.sonarUseExternalConfig
coverageEnabled := true
sonarProperties = Map(
"sonar.host.url" -> "http://127.0.0.1:9000",
"sonar.projectName" -> "myproject-backend",
"sonar.projectKey" -> "sonar-myproject-backend",
"sonar.sources" -> "src/main/scala-2.13",
"sonar.tests" -> "src/test/scala-2.13",
"sonar.junit.reportPaths" -> "target/test-reports",
"sonar.sourceEncoding" -> "UTF-8",
"sonar.scala.scoverage.reportPath"->"target/scala-2.13/scoverage-report/scoverage.xml",
"sonar.scala.scapegoat.reportPath" -> "target/scala-2.13/scapegoat-report/scapegoat.xml"
)
последовал sbt-scoverage
затем я сделал -> sbt
-> coverage
-> test
-> coverageReport
сгенерировал отчет
[info] Written Cobertura report [/home/user/git/myproject/target/scala-2.13/coverage-report/cobertura.xml]
[info] Written XML coverage report [/home/user/git/myproject/target/scala-2.13/scoverage-report/scoverage.xml]
[info] Written HTML coverage report [/home/user/git/myproject/target/scala-2.13/scoverage-report/index.html]
[info] Statement coverage.: 38.67%
[info] Branch coverage....: 31.58%
затем я сделал
sonarScan
и проверьте отчет на http://127.0.0.1:9000/dashboard?id=myproject-backend
затем отображается покрытие кода 0.0% и модульные тесты —
и я проверил, что отчеты существуют в
target/scala-2.13/scoverage-report/scoverage.xml
target/scala-2.13/scapegoat-report/scapegoat.xml
и отчеты о тестировании класса существуют на
target/test-reports
com.myproject.test.abctest.EventTest.xml com.myproject.test.xyztest.FileUploadTest.xml TEST-com.myproject.test.xyztest.DirectoryCreationTest.xml
com.myproject.test.abctest.QueryEventTest.xml TEST-com.myproject.test.abctest.InsertEventTest.xml TEST-com.myproject.test.xyztest.FileUploadTest.xml
com.myproject.test.xyztest.DirectoryCreationTest.xml TEST-com.myproject.test.abctest.QueryEventTest.xml
тогда почему я получаю покрытие кода 0%? чего мне здесь не хватает? пожалуйста, руководство, спасибо
Ответ №1:
Я давал неправильный ключ, правильный ключ был
"sonar.scala.coverage.reportPaths"->"target/scala-2.13/scoverage-report/scoverage.xml",
"sonar.scala.scapegoat.reportPaths" -> "target/scala-2.13/scapegoat-report/scapegoat-scalastyle.xml"
после этого я могу получить% покрытия кода, но количество модульных тестов по-прежнему отсутствует, потому что я думаю, что оно не поддерживается sonar прямо сейчас. здесь scala не упоминается при выполнении теста
https://docs.sonarqube.org/latest/analysis/coverage /
Ответ №2:
Спасибо @swaheed, я не могу добавить комментарий к вашему сообщению из-за ограничения репутации.
Мы также сталкиваемся с этой проблемой при использовании sonar-scala. Мы обнаружили, что покрытие кода может быть отображено с помощью следующих свойств:
Для SonarQube версии 8.6: необходимо использовать sonar.scala.coverage.reportPaths, как упоминал @swaheed.
«sonar.scala.coverage.reportPaths»->»target/scala-2.13/scoverage-report/scoverage.xml «
Для сообщества SonarQube версии 8.7.1 (я следую этому docker-compose, чтобы вызвать SonarQubeDocker https://github.com/sonar-scala/sonar-scala-docker/blob/master/docker-compose.yml ), любое из приведенных ниже свойств работает
«sonar.scala.coverage.reportPaths»->»target/scala-2.13/scoverage-report/scoverage.xml «
или
«sonar.scala.scoverage.reportPath»->»target/scala-2.13/scoverage-report/scoverage.xml «
Комментарии:
1. Кажется, я не могу найти какую-либо документацию, связанную
sonar.scala.scoverage.reportPath
с тем, можете ли вы предоставить ссылку?2. @swaheed, здесь упоминается ключ конфигурации sonar-scala.com/docs/setup/sbt-sonar/#usage