Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Eclipse 为什么你不尊重我的排除?_Eclipse_Maven_Sonarqube - Fatal编程技术网

Eclipse 为什么你不尊重我的排除?

Eclipse 为什么你不尊重我的排除?,eclipse,maven,sonarqube,Eclipse,Maven,Sonarqube,我有一个Java项目,我正在Eclipse中开发并使用Maven构建。几乎我所有的源代码包(in/src)都有相应的测试包(in/tests)。我希望我的SonarQube Maven构建只分析源包而忽略测试包。从文件系统中与/src和/tests处于同一级别的捆绑包中的我的pom.xml,我有一些类似的内容: ... <profile> <id>sonar</id> ... <properties> <

我有一个Java项目,我正在Eclipse中开发并使用Maven构建。几乎我所有的源代码包(in/src)都有相应的测试包(in/tests)。我希望我的SonarQube Maven构建只分析源包而忽略测试包。从文件系统中与/src和/tests处于同一级别的捆绑包中的我的
pom.xml
,我有一些类似的内容:

...
<profile>
    <id>sonar</id>
    ...
    <properties>
        <sonar.skippedModules>**/tests/**</sonar.skippedModules>
    </properties>
</profile>
...
<modules>
    <module>../src/com.company.bundleA</module>
    <module>../tests/com.company.bundleA.test</module>
    ...
</modules>
。。。
声纳
...
**/测验/**
...
../src/com.company.bundleA
../tests/com.company.bundleA.test
...

当我运行构建时,测试包中的源代码包含在SonarQube分析中。或者,我尝试使用
sonar.test.excludes
sonar.excludes
属性来代替
sonar.skippedModules
。通过Exclutions属性,控制台输出显示已读取Exclutions,但从未将任何文件与我尝试使用的表达式匹配。我还尝试在SonarQube web服务器UI的设置部分中设置这些属性,并生成了包含测试文件的相同结果。我能够成功地从分析中排除测试包的唯一方法是将它们从模块列表中删除,或者在我的运行配置的目标字段中的
-Dsonar.skippedModules
标志后包含它们。然而,对于一个包含80多个捆绑包和140000行代码的项目来说,这不是一个可维护的解决方案。
pom.xml
文件的组织是否有问题?这是我最好的猜测。

首先,
声纳。skippedModules
不接受通配符模式-这可能是这不起作用的第一个原因


其次,SonarQube 4.3中不推荐使用此属性,请参阅。在最新版本中,这被“sonar.skip”所取代(请参见)

首先,
sonar.skippedModules
不接受通配符模式-这可能是此功能不起作用的第一个原因


其次,SonarQube 4.3中不推荐使用此属性,请参阅。在最近的版本中,这被“sonar.skip”所取代(请参见)

我将
sonar.skippedModules
替换为
sonar.skip
,并取消了我对通配符的使用。在
sonar.skip
中,我尝试了
com.company.bundleA.test、com.company.bundleB.test
。/tests/com.company.bundleA.test、../tests/com.company.bundleB.test
,但都没有成功。还有什么我需要考虑的吗?IIRC,SONAR.SKIP必须设置在每一个你想跳过的模块的POM中。我已经替换了<代码>声纳。SkpBoodos<代码> > <代码>声纳。跳过并取消了通配符的使用。在
sonar.skip
中,我尝试了
com.company.bundleA.test、com.company.bundleB.test
。/tests/com.company.bundleA.test、../tests/com.company.bundleB.test
,但都没有成功。还有什么我需要考虑的吗?IIRC,SONAR.SKIP必须设置在每一个你想跳过的模块的POM中。