【问题标题】:SonarQube Quality Profiles are not being used during the sonarqube scan在 sonarqube 扫描期间未使用 SonarQube 质量配置文件
【发布时间】:2018-08-15 00:24:11
【问题描述】:

在 sonarqube 扫描期间未使用 SonarQube 质量配置文件:

我们为构建定义安装并启用了声纳任务,我们看到的是质量配置文件正在为一次构建运行停止,并再次使用质量配置文件自动启动下一次运行。对于备用构建运行,我们始终看到相同的行为。

我们可以看到配置文件停止和启动的图像:

【问题讨论】:

  • 您的任何与问题无关的指标是否会随着这些配置文件的变化而剧烈波动?
  • 我不确定我是否正确,如果您询问报告的问题的变化,那么存在巨大差异,因为大多数文件类型都被排除在分析之外,导致问题很少报道。如果这不是您要查找的信息,请详细说明您的问题。

标签: sonarqube sonarqube-scan


【解决方案1】:

您看到的是某处配置错误的结果。您向您的 cmets 表明,随着配置文件的切换,您还会看到问题数量的大幅波动

由于大多数文件类型被排除在分析之外,因此报告的问题很少。

让我们分解一下:

您看到的配置文件事件只是记录/反映配置文件使用从一项分析到另一项分析的变化。如果我有一个使用 Java 和 JavaScript 的项目,第一次分析将使用该语言的默认配置文件。然后,假设我使用 deprecated 属性 sonar.language 将分析限制为仅 Java 文件并再次分析。由于在我的项目中不再找到 JavaScript,因此不会使用默认的 JavaScript 配置文件,并且会记录一个配置文件事件。

这似乎就是您在活动日志中看到的内容。

现在开始侦探工作:为什么会发生这种情况?首先,它来回摆动。这表明配置不是在项目级别(在 SonarQube 本身中)设置的,而是在分析期间仅有时传递的属性,或其他一些分析方面的情况。您需要独立调查一些可能的原因:

  • sonar.language - 如果在分析过程中使用了这个 deprecated 属性,它将默认将多语言分析限制为单一语言。它可能在您的属性文件中或通过分析命令行-Dsonar.language=foo
  • 排除项 - 很难从分析方面正确设置排除项,但这可能会发生
  • 不正确/不完整的签出 - 是否可能只签出您项目的一部分?

在对此进行调查时,您应该知道分析端属性可以设置在两个级别;在单个项目/分析或全局扫描仪配置中。

我猜您的 CI 系统有多个从属系统,并且语言是否从您的项目中删除(或不删除)取决于当晚工作落在哪个从属设备上。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,我相信我已经为我们找到了问题的根源。捕获构建期间使用的源代码和属性,我无法发现声纳属性或收集的源代码中的任何差异,如上一个答案中所建议的那样。

    我们尝试使用 SonarQube 分析的解决方案有几个 C# 项目,它们是外部核心解决方案的一部分,在多个组件之间共享。编译这些其他组件中的任何一个都需要首先编译核心。我认为问题在于在编译我要分析的组件时,MsBuild 有时会重新构建 core.xml 中包含的一些项目。根据它们是否被重建,项目和文件的数量(以及由此产生的问题)会朝着一个方向或另一个方向剧烈波动。

    通过强制 MsBuild 在编译之前清理我的组件解决方案

    MsBuild.exe MySolution.sln /t:Clean,Build 
    

    我确保通过 sonarqube 构建和分析一组一致的项目。我已经 30 岁了,使用这种新方法,我不再在使用和不使用质量配置文件之间来回折腾.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-16
      • 2021-05-06
      • 2017-06-15
      • 2018-03-17
      • 2017-10-08
      • 2016-09-14
      • 2017-10-11
      • 2017-08-09
      相关资源
      最近更新 更多