【问题标题】:Sonar is showing new violations in old codeSonar 在旧代码中显示新的违规行为
【发布时间】:2019-01-01 10:16:47
【问题描述】:

我们正在使用 Sonar Qube 6.7.3 和 sonar-java-plugin 5.3

我们最近对声纳配置进行了以下更改

  1. 启用新规则
  2. 将配置更改为包含字节码(从“clean sonar:sonar”更改为“clean package sonar:sonar”)

我们正在使用声纳 svn 插件并为其提供有效凭据。

我了解向 sonar 提供字节码将有助于识别更多问题,但是,我希望 Sonar 根据 svn 代码提交日期和最后分析日期标记新问题,但事实并非如此。。 p>

请告诉我为什么它将旧代码中的问题标记为新代码?

【问题讨论】:

  • 如果您启用了新规则,那么它将在所有代码库中标记违反这些新规则的行为,而不仅仅是在激活后提交的提交中
  • 是的,它会在旧代码中显示违规行为,但不会将它们标记为我相信的新违规行为。如果我错了,请纠正我
  • 从下面的线程中,我了解了由于向声纳提供类文件而导致的新问题。 groups.google.com/forum/#!topic/sonarqube/oEw61qJYR6M 但我不明白为什么声纳会在旧代码中显示新错误。因为它可以从 svn 获取代码提交日期。还帮助我找到处理这个新问题的方法。我不想因为旧代码的这些问题而破坏我的构建。
  • But I could not understand why sonar is showing new errors in old code 为什么只扫描配置/规则集更改后提交的代码而不是扫描所有代码? Also help me find a way to handle this new issues 你甚至还没有发布这些问题。但无论如何有两个选择:更改构建配置或更改您的代码

标签: java sonarqube sonarqube-scan


【解决方案1】:

Sonar Sanner 始终扫描整个代码库。如果有人确定某些代码结构是错误的或危险的(规则集已更改),那么 SonarQube 必须通知该代码的所有出现。为什么?让我们考虑以下示例:

插件升级后,SonarQube 提供了一个新的非常重要的安全规则,禁止使用危险的密码算法。现在是问题:

  • 只有在新代码中才有危险吗?
  • 总是很危险吗?

当然,这总是很危险的。 SonarQube 不会强迫您修复所有问题(质量门的使用是可选的)。它的主要目标是让您了解整个代码库中存在多少问题(代码异味/错误/漏洞)。

【讨论】:

  • 有没有可能配置,只考虑新的代码更改来扫描并发现问题?或者是否有可能生成在日期范围内报告的报告?
  • SonarScanner 始终扫描所有代码。如果您使用 SonarQube 付费版本 (Developer+) 或 SonarCloud,那么您可以分析 branchespull requests。 SonarQube 将仅显示主分支和新分支/拉取请求之间的差异。
  • 感谢@agabrys 的及时回复。我们正在使用 SonarQube,问题是,我们正在处理一个非常古老的项目,如果我从大约 1000 多行的文件中修改一行代码,SonarQube 将扫描同一文件中的所有代码行并显示甚至与我的修改无关的问题列表。请向我建议是否有可能只配置当前修改的代码行而不是扫描整个文件。
  • 正如我在答案和之前的评论中所写:SonarScanner always scan the entire code base。你不能改变它。只扫描新行是不可能的。
猜你喜欢
  • 2012-02-16
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多