我在为项目制作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=.
答案 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。