SonarQube отображает покрытие кода 0% в scala

#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