2012-10-11 137 views
4

我正在通过sonar-runner运行一个非常简单的python项目集,并且遇到了出现测试的问题。Sonar中的Python测试/测试覆盖率没有显示?

我使用Python Plugin 1.1运行Sonar 3.2.1。覆盖率报告是以前生成的。

我有以下设置:

sonar.dynamicAnalysis=reuseReports 
sonar.core.codeCoveragePlugin=cobertura 
sonar.python.coverage.reportPath=coverage.xml 

不管我在这一点上做的,覆盖面不出来。

我的测试与我的源文件位于同一个文件夹中......可能是问题所在?声纳代码是如何规定覆盖率报告以便通过声纳进行适当的分析的?

编辑:添加了几个音符......

  • 这是一个多Python实例。我在那里有三个项目。其他一切似乎都在声纳报告中正确显示。我为每个目录定义了基本目录和源目录,并且coverage.xml文件已经预先生成到每个目录的基本目录中。
  • 覆盖面小部件显示上升,但表明:

    Code coverage 
    - 
    Unit test success 
    0 tests 
    
  • ,当我跑我也看到声纳亚军:

    10:04:29.641 INFO p.PhasesTimeProfiler - Sensor PythonCoverageSensor... 
    10:04:29.642 INFO .p.c.CoberturaParser - Parsing report '/home/jenkins/jobs/myproject/workspace/trunk/src/python/coverage.xml' 
    10:04:29.883 INFO p.PhasesTimeProfiler - Sensor PythonCoverageSensor done: 242 ms 
    
+0

使用SonarQube 4.4并存在同样的问题。 sonar-runner正在处理正确的文件,但报道报告未显示在仪表板上。你有没有找到解决方案? – EmmEff

+0

毫无疑问,我不这么认为。我们已经放弃了Sonar与我们的Python代码。当我有更多时间时,我会再试一次。 – talon8

+0

你如何生成覆盖报告文件? –

回答

1

“sonar.python.coverage.reportPath “必须指向覆盖文件相对于”sonar-project.properties“文件的路径。通常,这些临时文件是在临时文件夹(如“target”或“bin”)中生成的。所以,你的配置应该更类似于:

sonar.python.coverage.reportPath=target/coverage.xml 
+0

我正在项目的根文件夹中生成矿井。所以我的路径应该是正确的... – talon8

+3

对不起,如果发布是有点旧。如果工作目录发生变化,我发现了差异。覆盖它不尊重属性文件,但尊重工作目录。 – Killrazor

3

也有这个问题,pytest没有产生正确格式化覆盖率报告什么sonarqube可以利用。在pytest生成覆盖报告后,我运行coverage xml -i,并且此命令生成sonarqube能够理解的格式正确的覆盖报告。