Java SonarQube:源目录与包声明不匹配
我很难为我的项目计算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
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=。
配置模块,并在每个项目上定义排除项,以便只包含您想要的源代码。