在声纳扫描期间未使用SonarQube质量配置文件:
我们已经为构建定义安装并启用了声纳任务,我们看到的是,为一次构建运行停止了质量配置文件,并且再次使用质量配置文件自动启动下一次运行。我们一直看到备用构建运行的行为相同。
我们可以看到配置文件已停止并启动的图片:
答案 0 :(得分:0)
您所看到的是某处配置错误的结果。您指出您的评论以及配置文件的切换,您还会看到问题计数中的大幅波动
因为大多数文件类型都被排除在分析之外,导致报告的问题非常少。
所以让我们打破这个:
您所看到的个人资料事件只是记录/反映从一个分析到另一个分析的个人资料使用情况的变化。如果我有一个带有Java和JavaScript的项目,第一个分析将使用该语言的默认配置文件。然后,假设我使用不推荐的属性sonar.language
将分析限制为仅Java文件并再次进行分析。由于我的项目中找不到JavaScript,因此将不会使用默认的JavaScript配置文件,并会记录配置文件事件。
这似乎就是您在活动日志中看到的内容。
现在对于侦探工作:为什么会发生这种情况?首先,它来回摆动。这表示配置不是在项目级别(在SonarQube本身中),而是在分析期间仅通过 传递的属性,或其他一些分析方面的情况。您可能需要独立调查一些可能的原因:
sonar.language
- 如果在分析期间使用此已弃用的属性,则会将默认的多语言分析限制为单一语言。它可以位于您的属性文件中,也可以在分析命令行-Dsonar.language=foo
在研究这个问题时,您应该知道分析方面的属性可以设置为两个级别;在单个项目/分析或全局扫描仪配置中。
我猜你的CI系统有多个奴隶,语言被删除 - 或者没有 - 从你的项目中删除,取决于当晚作业所在的奴隶。
答案 1 :(得分:0)
我遇到了类似的问题,我相信我已经为我们找到了问题的根源。捕获构建过程中使用的源代码和属性,如上一个答案中所建议的,我无法找到声纳属性或收集的源代码中的任何差异。
我们试图用SonarQube分析的解决方案有一些C#项目,这些项目是外部核心解决方案的一部分,在多个组件之间共享。编译其他任何组件都需要首先编译内核。我认为问题在于,在编译要分析的组件时,MsBuild有时会重建一些包含在核心中的项目。根据是否进行重建,项目和文件(以及问题)的数量会在一个方向或另一个方向上剧烈波动。
通过强制MsBuild在编译前清理组件解决方案,
MsBuild.exe MySolution.sln /t:Clean,Build
我确保使用sonarqube构建并分析一致的项目。通过这种新方法,我已有30个构建项目,而且在使用和不使用质量配置文件之间,我再也不会来回切换