6

我正在配置一个多模块 maven 项目,该项目在验证阶段强制执行sonar:sonar 。

如果声纳抛出一些警报,我还使用声纳的 build-breaker-plugin 来避免部署模块。

这种方法的问题是开发人员应该去声纳服务器检查警报。这还不错,但是如果多个用户尝试同时分析同一个模块,则不可能知道上次/当前分析是否有您的警报。

背景:我们有一个 CI 系统,每小时构建所有模块。所以有时这会与一些开发人员部署相冲突(这会强制分析)

恕我直言,只有 CI 系统应该将分析提交给声纳服务器,因为 CI 有最后提交和部署的代码。但是开发人员应该只在本地检查他的更改。

那么,为什么我们要强制在开发人员构建中进行分析?避免部署不遵守代码质量阈值的模块(sonar 的 build-breaker 插件对此有所帮助)。

有一种方法可以配置 maven-sonar-plugin 来做到这一点?

  • 开发人员构建中的本地分析。
  • CI 构建中的服务器分析
4

1 回答 1

1

据我了解,您可能应该拥有 Sonar 的第一个实例,如果您的质量要求未得到满足,则仅在构建期间使用它来破坏它,以及您的 CI 系统使用的第二个实例,这是您的参考产品。如果您真的想强制执行您的流程并确保不会将违反这些要求的代码推送到您的 SCM 系统中,那么您可以将 Sonar 分析绑定到预提交挂钩上。但这对我来说似乎有点极端......

在 SonarSource,我们没有选择“因违规而阻止提交”的方法。事实上,我们认为只要您管理好一些技术债务(= 违规)是可以的。管理技术债务意味着审查 Sonar 中的每个传入违规并在代码中修复它们或将这些违规影响到行动计划,主要思想是技术债务不应该在开发冲刺结束时增加。这就是 Sonar 的审查功能的意义所在。Sonar 提供了一些小部件来监控审查的演变和新的违规行为,而无需审查。

于 2012-05-30T08:58:36.647 回答