【问题标题】:Merge two configuration files while removing duplicate keys?在删除重复键的同时合并两个配置文件?
【发布时间】:2020-04-20 11:42:27
【问题描述】:

所以我试图将以下文件 sonar-project.properties 文件拆分为两个文件。我将提交一个文件进行源代码管理,另一个文件由开发人员在其本地计算机上保存。

本地开发者sonar-project.properties文件:

sonar.host.url=localhost
sonar.login=herro
sonar.password=lol

sonar-project.properties 将在源代码管理中的文件:

sonar.host.url=https://my-project.com/sonarqube
sonar.projectKey=my-project

我希望它们都合并以产生以下结果:

sonar.host.url=localhost
sonar.projectKey=my-project
sonar.login=herro
sonar.password=lol

这几乎是一个“默认”配置,我希望开发人员能够用他们自己的配置值覆盖它。 SonarQube 本身不支持 Afaiac,因此我必须手动执行此操作。

我在 Linux 和 Windows 机器上与开发人员一起使用 Node.js,因此必须支持这两个平台。有什么想法吗?

【问题讨论】:

  • 您是否仅限于某种工具,或者您如何执行 sonarqube 扫描仪?它必须是扫描仪吗,也许像SonarLint这样的IDE插件也足够了?取决于您使用的规则集。或者甚至使用 gradle 作为构建工具?有多种方法可以实现。
  • @SimonSchrottner 我觉得很奇怪 StackOverflow 会在您发布 4 小时后提醒我!没有任何工具不受限制,我们确实将 ESLint 与 SonarQube 插件一起使用,因此我们得到了 lint 规则,但它更像是对我们来说非常有趣的安全评估!但至于你的问题,不,没有任何工具是禁区!

标签: node.js configuration sonarqube


【解决方案1】:

我知道这是一个 JS 项目,因此我的建议可能不可行,但肯定会奏效。

我建议使用 gradle。缺点是您需要在开发机器上安装 java。但从那里开始,您有多种选择来实现这一目标。此外,您还有一个 gradle sonarqube 扫描仪,它可以让所有机器上的设置都很安静。

设置 gradle 相当容易(这是一个简短的解释,您想研究 gradle 包装器以确保所有人都使用相同的 gradle 版本)。基于https://plugins.gradle.org/plugin/org.sonarqube,这就是您在 build.gradle 中启动所需的全部内容。但这仅仅是开始。

plugins {
  id "org.sonarqube" version "2.8"
}

之后,您有多种选择。开发人员可以在 <user>/.gradle/gradle.properties 中指定全局声纳凭据,或者您可以简单地在插件中加载两个文件,例如

    sonarqube {
        properties {
            Properties props = new Properties()
            props.load(new FileInputStream("sonar-project.properties"))
            props.forEach { key, value ->
                property key, value
            }
            Properties propsLocal = new Properties()
            propsLocal.load(new FileInputStream("sonar-project-local.properties"))
            propsLocal.forEach { key, value ->
                property key, value
            }
        }
    }

有两个不同的文件,一个签入,一个本地创建。

正如我所提到的,这是 Gradle 并且依赖于 Java,但正如您所说,每个工具都是可行的。我虽然建议这样做,但您也可以配置 sonarqube gradle 来扫描您的 JS 文件,这很好用,因为我们在公司内部使用它。此外,我们还使用 gradle 到处安装相同版本的 nodejs,这是一个很好的副作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多