设置Sonar的来源

时间:2014-02-10 04:50:35

标签: java sonarqube

我正在为我的项目使用静态工具Sonar。 mt项目的文件夹结构如下:

src
   com
   plugin
      com

我的 src 文件夹包含 com.a.b 等包,然后插件包含 com.c.f 。值得注意的是,包不是以 plugin.com.c.f 开始的。

现在我使用以下方式运行Sonar:

   <property name="plugin.sonar.projectName" value="plugin" />
   <property name="plugin.sonar.projectBaseDir" value="../base/src/plugin" />
   <property name="plugin.sonar.sources" value="../../base/src/plugin" />
   <property name="project.sonar.sources" value="src" />                             //line 4
   <!-- property name="project.sonar.sources" value="src, src/plugin" / -->          //line 5

它抛出,Caused by: org.sonar.squid.api.AnalysisException: The source directory does not correspond to the package declaration com.c.f

所以我评论了第4行并使用了第5行,但是当项目中没有两个文件相同时,它继续抛出DuplicateSourceException(检查三次)。

还有其他办法吗?我做错了吗?

2 个答案:

答案 0 :(得分:1)

使用您的目录结构,您可能希望在根项目上设置排除规则,以便src/plugin目录仅作为plugin子项目的一部分进行分析,例如:

<property name="project.sonar.sources" value="src"/>
<property name="project.sonar.exclusions" value="src/plugin/**"/>
<property name="plugin.sonar.sources" value="src/plugin"/>

答案 1 :(得分:0)

您的目录结构很复杂。在您的情况下,“插件”是另一个源目录。如果 将“src”标记为源,其下的所有文件都必须作为源。这导致包目录不匹配。正常编译这不是错误。声纳这是一个错误。

递归扫描目录文件夹。当您提供src和src / plugin作为源时,这可能会从src / plugin中获取两次源代码。

您可以利用这个机会来清理构建环境(一个用于主构建,另一个用于依赖)。