我正在配置一个多模块 maven 项目,该项目强制在验证阶段执行声纳:声纳。
我还使用声纳的 build-breaker-plugin 来避免在声纳抛出一些警报时部署模块。
这种方法的问题是开发人员应该去声纳服务器检查警报。这还不错,但是如果多个用户尝试同时分析同一个模块,则不可能知道上次/当前分析是否有您的警报。
上下文:我们有一个 CI 系统,每小时构建所有模块。因此,有时这会与某些开发人员部署(强制分析)发生冲突
恕我直言,只有 CI 系统应该将分析提交给声纳服务器,因为 CI 具有持续提交和部署的代码。但是开发人员应该只在本地检查他的更改。
那么,为什么我们要在开发人员构建中强制进行分析?避免部署不遵守代码质量阈值的模块(声纳的 build-breaker 插件对此有所帮助)。
有没有办法配置 maven-sonar-plugin 来做到这一点?
据我了解,您可能应该有第一个 Sonar 实例,仅在构建过程中使用,以便在不满足您的质量要求时破坏它,以及第二个由您的 CI 系统使用的实例,这是您的参考产品。如果您确实想强制执行您的流程,并确保破坏这些要求的代码不会被推送到您的 SCM 系统中,那么您可以将声纳分析绑定到预提交挂钩上。但这对我来说似乎有点极端......
在 SonarSource,我们没有选择“因违规而阻止提交”的方法。事实上,我们认为只要您能够管理好,拥有一些技术债务(=违规)就可以了。管理技术债务意味着审查 Sonar 中的每个传入违规行为并将其修复在代码中或影响这些违规行为对行动计划的影响,主要思想是技术债务不应在开发冲刺结束时增加。这就是声纳审查功能的目的。Sonar 提供了小部件来监控评论的演变以及无需审查的新违规行为。