Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SonarQube:源目录与包声明不匹配_Java_Sonarqube - Fatal编程技术网

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

Java SonarQube:源目录与包声明不匹配,java,sonarqube,Java,Sonarqube,我很难为我的项目计算sonarQube的正确属性。文件夹结构如下所示: mod/ framework/ Framework.java rebuild2/ Rebuild2.java sonar-project.properties 两个java文件中都没有太多内容,但它们都有包声明(分别是mod.framework和mod.rebuild2) 我尝试了多种不同的方法来编写属性文件,但它总是会出现“源目录与包声明不匹配”的错误。它似乎希望文件夹是mod.framework

我很难为我的项目计算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=.
如果Java文件(比如file.Java)具有如下包定义:

package com.abc.xyz;
对于文件,这意味着该文件应该位于文件夹结构中,如

com
   abc
      xyz
         File.java
但在你的情况下,这个规则是无效的。你的代码也不应该编译


请检查,可能是这样。

您的配置在概念上有问题

“框架”和“重建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文档。

也许您可以提供sonar项目的内容。属性?编辑以添加我当前的sonar-project.properties文件。代码编译良好。包声明和文件夹结构如您所述。java有包声明包mod.Rebuild2;文件夹结构mod/rebuild2/rebuild2.java尽管建议为类计算度量和其他工件,SonarQube根本不处理类。相反,源代码层次结构是基于目录结构构建的(假设它反映了包结构,这不一定是真的)。它确实运行良好,但并不理想。不幸的是,由于外部限制,我无法将项目拆分为完全独立的源代码树,因此我只能将就一下。这是一个很长的过程,但您可以尝试使用
projectBaseDir=。
配置模块,并在每个项目上定义排除项,以便只包含您想要的源代码。