SonarQube:源目录与包声明不匹配

时间:2014-02-05 11:21:30

标签: java sonarqube

我在为项目制作sonarQube的正确属性时遇到了困难。文件夹结构如下:

mod/
  framework/
    Framework.java
  rebuild2/
    Rebuild2.java
sonar-project.properties

在任何一个java文件中都没有多少但确实有包声明(分别是mod.framework和mod.rebuild2)。

我尝试了各种不同的方法来编写属性文件,但它总是出错“源目录与包声明不匹配”。似乎期望文件夹是mod.framework /和mod.rebuild2 /.

我查看了主网站上的文档,但他们的所有示例都没有包声明。我也在这里搜索过但是解决方案不适用于此,或者它们是maven / gradle配置。

有没有人知道是否可以为这种情况设置sonar-project.properties文件?

# Required metadata
sonar.projectKey=mc:rebuild2
sonar.projectName=Rebuild 2
sonar.projectVersion=0.2

# The value of the property must be the key of the language.
sonar.language=java

# Encoding of the source code
sonar.sourceEncoding=UTF-8

sonar.modules=framework,rebuild2
framework.sonar.projectName=Framework
framework.sonar.projectBaseDir=mod
framework.sonar.sources=.
rebuild2.sonar.projectName=Rebuild 2
rebuild2.sonar.projectBaseDir=mod
rebuild2.sonar.sources=.

2 个答案:

答案 0 :(得分:1)

如果Java文件(比如File.java)具有包解析,如:

package com.abc.xyz;

对于文件,这意味着文件应该在文件夹结构中,如

com
   abc
      xyz
         File.java

但在你的情况下,这条规则是无效的。而且你的代码也不应该编译。

请检查,可能是这种情况。

答案 1 :(得分:0)

您的配置中存在概念上的错误。

'框架'和'重建2'项目是具有单独源树的独立模块(想想子项目);或者它们只是同一源树中的单独包,在这种情况下,您可以删除sonar.sourceEncoding=UTF-8下面的行。

您的配置尝试在同一源代码树中定义2个模块,我不认为当前分析器支持此模块,除非使用排除项,例如:

sonar.modules=framework,rebuild2
framework.sonar.projectName=Framework
framework.sonar.projectBaseDir=.
framework.sonar.sources=.
framework.sonar.inclusions=mod/framework/**
rebuild2.sonar.projectName=Rebuild 2
rebuild2.sonar.projectBaseDir=.
rebuild2.sonar.sources=.
rebuild2.sonar.inclusions=mod/rebuild2/**

请参阅SonarQube文档中的Multi-module Project configuration