4

我正在尝试使用 Sonar 获得测试单元覆盖率。为此,我已按照以下步骤操作:

  1. 生成报告python manage.py jenkins --coverage-html-report=report_coverage
  2. 在中设置属性/sonar/sonar-3.5.1/conf/sonar.properties

sonar.dynamicAnalysis=reuseReports sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami/reports/coverage.xml

当我启动测试时,报告会在正确的位置生成。但是,Sonar 没有检测到单元测试。我错过了一步还是一切都错了?

4

3 回答 3

2

我认为问题在于 Sonar 和 Jenkins 之间似乎没有联系。使用插件会更容易。

安装插件后,您只需在 jenkins 管理中添加一个构建步骤。

为了在 Sonar 中查看覆盖率报告,您应该使用“Jenkins Sonar Plugin”。但是,它将迫使您创建一个 maven 项目(和一个 pom.xml),并且当您使用 Django(它已经做了 maven 所做的)时,它可能不是您想要的。

我认为您想要的是在某处看到代码覆盖率,也许您应该将其集成到 Jenkins 而不是 Sonar 中。为此,您可以使用两个插件,“Jenkins Cobertura 插件”和“HTML Publisher 插件”。

Jenkins Cobertura 插件将允许您以图形方式查看您的 coverage.xml 中的代码覆盖率。您可以看到包、文件、类、行和条件覆盖的百分比。您只需将coverage.xml 的链接添加到项目管理中的Jenkins 中。更多细节在这里

HTML Publisher plugin] 通过在 html 中发布覆盖率报告可能有助于查看详细的代码覆盖率。

于 2013-07-16T10:43:21.673 回答
0

在 Jenkins 上,我发现 coverage.xml 的路径与运行 manage.py jenkins 的目录相关。

就我而言,我需要在与 Jenkins 不同的机器上运行单元测试。为了允许 Sonar 使用生成的 coverage.xml,我有必要从相对于项目的同一位置的文件夹中运行测试,作为 Jenkins 上的工作区目录。

假设我在 Jenkins 上有以下内容
/local/jenkins/tmp/workspace/my_build
   + 我的项目
       + 应用程序1
       + 应用程序2
在测试机上说我有以下
/本地/测试
   + 我的项目
      + 应用程序1
      + 应用程序2

我在测试机器上从 /local/test 运行单元测试。然后 coverage.xml 具有正确的相对路径,类似于 my_project/app1/source1.py 或 my_project/app2/source2.py

于 2013-11-10T07:59:19.533 回答
-1

我认为问题在于:

sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami/reports/coverage.xml

阅读:链接

于 2013-05-13T10:11:40.107 回答