声纳:声纳是怎样工作的?

8
我们希望在项目中使用SonarQube和一些CI工具。 Sonar服务器网址已在主要的pom.xml文件中进行了配置。
项目中有几个团队成员。那么当一个团队成员在本地执行sonar:sonar命令并进行了本地更改后,另一个团队成员再次执行sonar:sonar命令并进行了本地更改,然后有人从CI工具执行sonar:sonar命令(它被配置为分析Git存储库中的源代码)会发生什么?
SonarQube是否会显示与团队成员的本地更改相关的问题?如果团队成员之间的本地源代码与Git存储库中的源代码存在差异,那该怎么办?

最好将SonarQube设置保存在一个不同的文件sonar.properties中,而不是pom.xml中。不要将其作为共享开发人员之间的源管理的一部分。最后,将该文件放置在CI正在运行构建的系统目录中,并进行适当的配置。 - Nobody
@Nobody 将构建配置与代码库分离是一种很头疼的操作,而CI系统正在转向将元数据存储在其中。 (看着你,Jenkins。) - chrylis -cautiouslyoptimistic-
@chrylis 我的意思是将配置文件放在pom文件之外,而不是放在源代码管理之外。CI可以选择任何作为源代码管理一部分且可下载的内容。是的,我知道Jenkins.. Jenkins有一些称为pipelines的东西,并且可以从批处理中执行.. 所以这与您如何设置Jenkins有关。将配置文件单独保存将防止意外将报告上传到Sonar。 - Nobody
2个回答

18

sonar:sonar 执行分析并将结果发送到服务器,假设您正在使用具有适当权限的账户令牌运行它。

开发人员不应该在本地运行此类分析来检查他们的更改。相反,他们应该使用SonarLint,并可能使用pull request analysis(取决于您的基础架构)。

(编辑:已废弃 Pull request analysis,并替换为功能更全面的Branch analysis($))。

稍微扩展一下为什么开发人员不应该在本地使用sonar:sonar:它以最后保存的方式更新中央服务器。所以如果您已经编辑了 A.java 并在提交之前在本地分析过它,而我已将 A.java 重命名为 B.java 并进行了类似的预提交本地分析... 在 SonarQube 服务器上可见的是什么?这取决于谁最后保存/分析了。

相反,sonar:sonar 应该仅从您的 CI 工具上运行,针对整个团队已经可见的已签入代码


如果这是第一次构建,那么在什么时候创建新项目于SonarQube中?执行_sonar:sonar_ Sonar Maven插件从SonarQube服务器获取规则,SonarQube服务器创建新项目,Sonar Maven插件执行分析并将结果发送到服务器。我描述的顺序正确吗? - RuF
我相信项目的创建是在分析报告提交到服务器之后进行的。 - G. Ann - SonarSource Team
在Maven中执行sonar:sonar后,Sonar会给出Java文件中代码重复的报告,例如“必须删除1个重复的代码块”。因此,我检查了我的代码,在Java文件中没有重复的代码,只有少量方法在不同的对象上重复。在这种情况下,我们可以删除或重命名重复的方法。是否有任何方法可以解决Sonar中这种类型的问题?或者在pom.xml文件中添加排除项? - WASEEM
请看这里:https://stackoverflow.com/questions/56027391/does-maven-sonarqube-plugin-reads-failsafe-reports - Number945

2

你提到Sonar服务器URL在mail pom.xml中配置,而你的团队成员在本地运行sonar:sonar命令。但是由于所有人都引用同一个服务器URL,所以所有更改都会反映在共同的项目中。如果您想分别查看每个团队成员的差异,则需要更新项目名称以使它们彼此不同。否则,您将只能看到最新的结果。

Sonar以图形方式显示差异,同时您也可以比较两个版本。

第二,只有具有管理员权限的用户才能更新Sonar服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接