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

GitLab 15.11社区版自定义代码质量工具显示无变化问题排查

问题:GitLab 15.11社区版首次集成自定义代码质量工具,MR显示“Code Quality hasn’t changed”

我当前使用GitLab 15.11社区版,按照官方文档集成自定义代码质量工具,生成的报告格式如下:

[
    {
        "description": "global macro 'MAJOR_VERSION' not referenced [MISRA 2012 Rule 2.5, advisory]",
        "fingerprint": "c4288d3b-160e-4c22-b614-5a9a38034e4d",
        "severity": "minor",
        "location": {
            "path": "XXXX/XXXX/XXXX/XXXX.h",
            "lines": {
                "begin": 30
            }
        }
    }
]

对应的CI/CD配置文件内容如下:

code_quality:
    stage: test
    script: 
      - codelint.bat
    tags: 
      - windowsserver
    only:
      - api
      - merge_requests  
    artifacts:
      reports: 
        codequality: XXXX/XXXX/XXXX/result/Report.json
      paths:
        - XXXX/XXXX/result/

但发起合并请求后,UI始终显示“Code Quality hasn’t changed”。这是我首次在项目中使用Code Quality功能,请问这是什么原因?


可能的原因及解决方法

1. 基准分支无历史代码质量报告

GitLab对比代码质量变化的核心逻辑是用当前MR分支的报告和基准分支(比如你要合并到的api分支)的历史报告做对比。你是首次使用该功能,基准分支大概率从未执行过code_quality任务,没有可对比的历史数据,系统就会判定为“没有变化”。

解决办法:

  • 手动触发基准分支api的CI流水线,确保code_quality任务执行成功并上传报告。
  • 完成后再发起合并请求,就能看到分支间的代码质量差异了。

2. CI配置的执行规则限制了基准分支的任务运行

你的CI配置里only字段包含api和merge_requests,理论上api分支推送时会触发任务,但需要确认:

  • 去项目的「CI/CD > 流水线」页面查看api分支最近的流水线,确认code_quality任务是否真的执行了。
  • 如果没执行,检查分支名称是否完全匹配,或者有没有其他CI规则(比如except)和当前规则冲突。

3. 报告路径或格式存在隐性问题

虽然你提供的报告格式看起来符合要求,但仍需排查:

  • 查看code_quality任务的执行日志,确认XXXX/XXXX/XXXX/result/Report.json文件是否存在、是否有有效内容。
  • 检查报告中location.path字段是否是项目根目录的相对路径,如果是绝对路径,GitLab无法匹配项目内文件,会导致对比失效。

4. 社区版的功能逻辑限制

GitLab社区版的代码质量对比必须依赖基准分支的历史报告,没有基准数据的情况下,即使当前MR分支有新的问题,系统也无法识别为“变化”,只会显示“没有变化”。这是社区版的默认行为,必须先让基准分支生成一次报告才能正常对比。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:15