【问题标题】:Globs in sonar-project.propertiessonar-project.properties 中的球体
【发布时间】:2014-09-12 14:27:41
【问题描述】:

我正在处理一个大型遗留项目,我正在尝试将其组件化,从 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\.)

所以我猜 glob 不适用于源?如果真的是这样,我该怎么办?

我们使用 SonarQube 4.1.2。

【问题讨论】:

    标签: java sonarqube glob


    【解决方案1】:

    我有同样的问题,但我通过这样做解决了它:

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

    包含/排除属性支持通配符。你的测试也一样:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 不幸的是,“缩小焦点”帮助页面(我已经在问题中链接到)并没有帮助我解决这个问题。我不清楚我可以使用哪个属性来实现我想要的。我已经更新了这个问题,以便更清楚地显示我们的目录结构是什么样的;希望有帮助。
      猜你喜欢
      • 2018-03-09
      • 2015-09-04
      • 2015-10-27
      • 2016-03-08
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 2022-11-10
      • 2021-08-19
      相关资源
      最近更新 更多