【问题标题】:Branch coverage% mismatch between Istanbul and Sonar伊斯坦布尔和声纳之间的分支覆盖率不匹配
【发布时间】:2014-06-30 17:41:58
【问题描述】:

我的 Jenkins 作业通过 Sonar Runner 读取由伊斯坦布尔生成的 lcov 文件。伊斯坦布尔生成的 lcov 报告中的数字/未命中数与声纳中显示的不匹配。通过发现更多未命中,伊斯坦布尔更严格,存在 0-7% 的差异。

这是预期的吗?为什么会有差异?

环境:

  • SonarQube 3.5 和 3.7.4
  • SonarRunner 2.3
  • Sonar JavaScript 插件 1.6
  • Node.js 代码

【问题讨论】:

  • 这个增量不是预期的。您能否提供分析日志?以防万一,您是否从声纳分析中排除某些文件?
  • @Linda 我认为这很可能是因为“sonar.sources”没有涵盖所有代码。问题是工作区有不属于应用程序的文件和文件夹。有没有一种方法可以挑选文件和文件夹以将它们分配给“sonar.sources”?在一种情况下,我在工作区中只有一个属于应用程序的文件,但是当我将它作为“sonar.sources = index.js”时,Sonar 抱怨它无效。在我的大多数情况下,源代码位于“lib”目录中,并且直接在 $WORKSPACE 中的 1-2 个文件中(而不是在任何子文件夹中,以及其他非源 js 文件中)。

标签: node.js sonarqube istanbul


【解决方案1】:

单个文件中的 Coverage% 不匹配不应有所不同,但舍入除外。至于项目的覆盖率,您需要尝试sonar.exclusions。这是我们用于特定 Node 项目的内容:

sonar.sources=.
sonar.exclusions=src/**/*,test/**/*,node_modules/**/*,public/**/*,coverage/**/*,html-report/**/*,views/**/*,Gruntfile.js,*.html
sonar.tests=test

【讨论】:

  • 我有点困惑,为什么我们已经在伊斯坦布尔报告中排除了这些文件时需要指定 sonar.exclusions?我认为必须在 2 个地方进行排除没有多大意义。
猜你喜欢
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2015-08-26
  • 2019-04-28
  • 2015-07-29
  • 2015-09-10
相关资源
最近更新 更多