sonar-project.properties中的Globs

时间:2014-09-12 14:27:42

标签: java sonarqube glob

我正在开展一项大型遗留项目,我试图从SonarQube开始尝试组件化。我在sonar-project.properties中配置了一个多模块项目。这很好用。但是,我有一个问题是精确识别源文件夹。

不幸的是,我们的模块在文件系统中没有整齐地分开。该项目分为许多Eclipse项目,并且几个Eclipse项目一起形成一个模块。当然,我可以枚举所有项目,但这很麻烦,因为它们很多。这是我们目录结构的(简化)版本:

projects/
    moduleAsubmodule1/
        src/
            com/mycompany/moduleA/submodule1/
    moduleAsubmodule2/
        src/
            com/mycompany/moduleA/submodule2/
    moduleBsubmodule1/
        src/
            com/mycompany/moduleB/submodule1/
    moduleBsubmodule2/
        src/
            com/mycompany/moduleB/submodule2/
    moduleBsubmodule3/
        src/
            com/mycompany/moduleB/submodule3/

想象一下更多的模块和子模块,其中项目名称被连接在一起,但是包名称被很好地划分,从而更容易区分它们。

moduleA.sonar.projectBaseDir=.
moduleA.sonar.sources=projects/**/src/com/mycompany/moduleA/**/*
moduleA.sonar.test=projects/**/*.test/src/com/mycompany/moduleA/**/*

根据the documentation,这可能是排除的。但是,我收到以下错误消息:

16:10:44 ERROR: Unable to execute Sonar
16:10:44 ERROR: Caused by: The folder 'projects/**/src/com/mycompany/mymodule/**/*' does not exist for 'XXX:XXX:mymodule' (base directory = D:\XxxSonar\.)

所以我认为globs不适用于消息来源?如果确实如此,我该怎么办?

我们使用SonarQube 4.1.2。

2 个答案:

答案 0 :(得分:0)

指定“sonar.sources”时不允许使用通配符。相反,您应该使用允许缩小源和测试文件的属性。请参阅the documentation page on how to include or exclude files to narrow the focus

答案 1 :(得分:0)

我遇到了同样的问题,但我这样解决了这个问题:

sonar.sources=.
sonar.inclusions=projects/*/src/**/*

包含/排除属性支持通配符。同样适用于您的测试:

sonar.test.inclusions=projects/*/*.test/src/**/*