SonarQube:如何分析共享多个模块的项目?
SonarQube: How to analyze projects that share multiple modules?
我有四个项目,有几个共同的模块。
当我尝试运行 SonarQube 完整分析时,只有第一个项目被成功分析。从第二个项目开始,我收到一条错误消息 "XXX module is already present in the server".
我的四个项目中的每一个都包含一个聚合器 POM。这就是我用来构建它们和 运行 Maven sonar:sonar 目标的方法。
解决此问题的最佳方法是什么?
您似乎违反了 component/module/library 惯例或使用不当。根据 Configuration Management
原则,您不应该多次 "include"(在二进制配置管理的情况下构建)您的组件。
拥有一个库,其中有许多其他依赖的库,最后一个是独立的,这只是一个依赖项,您必须像管理任何其他框架一样管理 appart。
你只需要 install/deploy 这个组件自己,然后引用它。同样的原则适用于 SonarQube Configuration Manager
。您不能通过不同的 "products".
分析共享组件
它们必须有自己的生命周期。当四个项目彼此并行时,您如何管理共享库的演变?
如果通过共享模块,您的意思是该模块在项目 A 和项目 B 中都存在,那么是的,这会产生一个问题,因为 SONAR 只允许存在一个模块实例。
您可以做的是 运行 在您的项目 1 上使用 SONAR,然后清除工作区并再次 运行 它用于项目 2.. 依此类推...
这样一来,您在 SONAR 中一次只会有一个模块实例。
您或许可以编写一个脚本来逐个执行 SONAR 作业,然后在 Jenkins 中为此创建一个新作业。
Select 一个用于分析共享模块的主项目;先分析那个项目。
在其他(后续)项目中,通过将以下内容添加到共享模块的 pom.xml 中,从 SonarQube 分析中排除共享模块:
<properties>
<sonar.skip>true</sonar.skip>
</properties>
我有四个项目,有几个共同的模块。
当我尝试运行 SonarQube 完整分析时,只有第一个项目被成功分析。从第二个项目开始,我收到一条错误消息 "XXX module is already present in the server".
我的四个项目中的每一个都包含一个聚合器 POM。这就是我用来构建它们和 运行 Maven sonar:sonar 目标的方法。
解决此问题的最佳方法是什么?
您似乎违反了 component/module/library 惯例或使用不当。根据 Configuration Management
原则,您不应该多次 "include"(在二进制配置管理的情况下构建)您的组件。
拥有一个库,其中有许多其他依赖的库,最后一个是独立的,这只是一个依赖项,您必须像管理任何其他框架一样管理 appart。
你只需要 install/deploy 这个组件自己,然后引用它。同样的原则适用于 SonarQube Configuration Manager
。您不能通过不同的 "products".
它们必须有自己的生命周期。当四个项目彼此并行时,您如何管理共享库的演变?
如果通过共享模块,您的意思是该模块在项目 A 和项目 B 中都存在,那么是的,这会产生一个问题,因为 SONAR 只允许存在一个模块实例。
您可以做的是 运行 在您的项目 1 上使用 SONAR,然后清除工作区并再次 运行 它用于项目 2.. 依此类推...
这样一来,您在 SONAR 中一次只会有一个模块实例。
您或许可以编写一个脚本来逐个执行 SONAR 作业,然后在 Jenkins 中为此创建一个新作业。
Select 一个用于分析共享模块的主项目;先分析那个项目。
在其他(后续)项目中,通过将以下内容添加到共享模块的 pom.xml 中,从 SonarQube 分析中排除共享模块:
<properties>
<sonar.skip>true</sonar.skip>
</properties>