You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ScrutinizerCI中为单仓库配置多项目代码分析?

在ScrutinizerCI中为Monorepo分模块配置分析任务

ScrutinizerCI支持通过自定义配置文件(.scrutinizer.yml)为monorepo内的不同子项目单独设置分析和覆盖率统计任务,不需要复制仓库。具体实现方式如下:

1. 编写分模块的配置文件

在仓库根目录创建或修改.scrutinizer.yml,针对每个子项目定义独立的分析任务,指定目标路径、测试命令和覆盖率收集规则:

build:
  nodes:
    # 针对packA的分析任务
    packA-analysis:
      tests:
        override:
          - command: 'cd packages/packA && phpunit --coverage-clover=coverage.xml'
            coverage:
              file: 'packages/packA/coverage.xml'
              format: 'clover'
      analysis:
        path: 'packages/packA'
        php: true # 根据项目语言调整,比如js、python等

    # 针对packB的分析任务
    packB-analysis:
      tests:
        override:
          - command: 'cd packages/packB && phpunit --coverage-clover=coverage.xml'
            coverage:
              file: 'packages/packB/coverage.xml'
              format: 'clover'
      analysis:
        path: 'packages/packB'
        php: true

    # 针对appA的分析任务
    appA-analysis:
      tests:
        override:
          - command: 'cd apps/appA && npm test -- --coverage'
            coverage:
              file: 'apps/appA/coverage/lcov.info'
              format: 'lcov'
      analysis:
        path: 'apps/appA'
        javascript: true

    # 针对appB的分析任务
    appB-analysis:
      tests:
        override:
          - command: 'cd apps/appB && npm test -- --coverage'
            coverage:
              file: 'apps/appB/coverage/lcov.info'
              format: 'lcov'
      analysis:
        path: 'apps/appB'
        javascript: true

2. 关键配置说明

  • nodes:每个节点对应一个独立的分析任务,可为每个子项目命名专属节点(比如packA-analysis)。
  • analysis.path:指定当前任务需要分析的子项目路径,Scrutinizer只会扫描该路径下的代码。
  • 测试命令与覆盖率:在tests.override中定义子项目的测试执行命令,并指定覆盖率报告的文件路径和格式,确保Scrutinizer能精准收集对应子项目的覆盖率数据。
  • 语言指定:根据子项目的技术栈开启对应的分析支持(比如php: true或javascript: true)。

3. 验证配置效果

提交配置文件到仓库后,Scrutinizer会自动执行所有定义的节点任务,你可以在Scrutinizer的项目面板中查看每个子项目的独立分析结果和覆盖率统计。

内容的提问来源于stack exchange,提问作者Khadir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:22:45