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

GitHub Actions中PHPStan/PHPMD无报告但本地有问题求助

本地与GitHub Actions中PHPStan/PHPMD结果不一致的排查方向

我在GitHub Actions工作流中运行PHPStan和PHPMD,本地环境能正常返回代码问题列表,但在GitHub Actions里完全没有问题报告。已经通过ls和pwd命令确认过路径正确,不知道该从哪入手排查。

环境信息

本地环境

  • Laravel Sail
  • PHP版本:8.2.12
  • PHPStan版本:1.10.47
  • PHPMD版本:2.14.1(使用PHAR版本避免Laravel相关错误)

GitHub Actions环境

  • 运行器:ubuntu-latest
  • PHP版本:8.2(工作流中配置)
  • PHPMD版本:2.14.1(使用PHAR版本避免Laravel相关错误)

工作流配置

- name: Run PHPStan
  run: |
    ./vendor/bin/phpstan analyse --error-format=raw --no-progress --memory-limit=1G --configuration=./phpstan.neon | reviewdog -f=phpstan -name="PHPStan" -reporter=github-pr-review -level=warning

- name: Run PHPMD
  run: |
    php /usr/local/bin/phpmd.phar ./app/Exceptions,./app/Http,./app/Models,./app/Contracts,./app/Repositories,./app/Services,./routes,./tests checkstyle ./phpmd.xml | reviewdog -f=checkstyle -name="PHPMD" -reporter=github-pr-review -level=warning

GitHub Actions日志

PHPStan执行日志

Run ./vendor/bin/phpstan analyse --error-format=raw --no-progress --memory-limit=1G --configuration=./phpstan.neon | reviewdog  -f=phpstan -name="PHPStan"  -reporter=github-pr-review -level=warning

  ./vendor/bin/phpstan analyse --error-format=raw --no-progress --memory-limit=1G --configuration=./phpstan.neon | reviewdog  -f=phpstan -name="PHPStan"  -reporter=github-pr-review -level=warning
  shell: /usr/bin/bash -e {0}
  env:
    COMPOSER_PROCESS_TIMEOUT: 0
    COMPOSER_NO_INTERACTION: 1
    COMPOSER_NO_AUDIT: 1
    REVIEWDOG_GITHUB_API_TOKEN: ***

PHPMD执行日志

Run php /usr/local/bin/phpmd.phar ./app/Exceptions,./app/Http,./app/Models,./app/Contracts,./app/Repositories,./app/Services,./routes,./tests checkstyle phpmd.xml | reviewdog -f=checkstyle -name="PHPMD" -reporter=github-pr-review -level=warning

  php /usr/local/bin/phpmd.phar ./app/Exceptions,./app/Http,./app/Models,./app/Contracts,./app/Repositories,./app/Services,./routes,./tests checkstyle phpmd.xml | reviewdog -f=checkstyle -name="PHPMD" -reporter=github-pr-review -level=warning
  shell: /usr/bin/bash -e {0}
  env:
    COMPOSER_PROCESS_TIMEOUT: 0
    COMPOSER_NO_INTERACTION: 1
    COMPOSER_NO_AUDIT: 1
    REVIEWDOG_GITHUB_API_TOKEN: ***

排查方向

1. 单独执行工具,排除reviewdog干扰

当前命令将工具输出通过管道传给reviewdog,可能是reviewdog处理输出时出现问题。先在工作流中单独执行PHPStan和PHPMD,直接查看原始输出:

- name: Test PHPStan raw output
  run: ./vendor/bin/phpstan analyse --error-format=raw --no-progress --memory-limit=1G --configuration=./phpstan.neon

- name: Test PHPMD raw output
  run: php /usr/local/bin/phpmd.phar ./app/Exceptions,./app/Http,./app/Models,./app/Contracts,./app/Repositories,./app/Services,./routes,./tests checkstyle ./phpmd.xml

如果单独执行能看到问题,说明是reviewdog的配置或权限问题;如果还是无输出,再排查工具本身。

2. 检查工具配置文件一致性

确认GitHub Actions环境中的phpstan.neon和phpmd.xml是否与本地完全一致,可能存在CI环境中配置文件被覆盖或未同步的情况。可以在工作流中添加步骤查看配置文件内容:

- name: Check PHPStan config
  run: cat ./phpstan.neon

- name: Check PHPMD config
  run: cat ./phpmd.xml

3. 验证依赖安装完整性

本地使用Laravel Sail,依赖可能安装更完整,而GitHub Actions中composer install可能跳过了dev依赖。检查工作流中的composer命令是否添加--dev参数,确保PHPStan所需的dev依赖已安装:

- name: Install dependencies
  run: composer install --no-interaction --prefer-dist --dev

4. 对比PHP扩展差异

本地与CI环境的PHP扩展可能不一致,比如PHPStan需要的php-ast扩展、PHPMD需要的tokenizer扩展等。在工作流中添加步骤查看已安装的扩展:

- name: Check PHP extensions
  run: php -m

对比本地php -m的输出,确保CI环境安装了所有必要扩展。

5. 确认代码文件完整性

虽然用ls确认了路径,但要注意CI环境拉取的代码是否完整,比如本地存在但.gitignore忽略的文件在CI中缺失,或者分支代码不一致。可以在工作流中添加步骤查看当前分支和文件状态:

- name: Check git status
  run: |
    git branch
    git status
    ls -la ./app

6. 调整工具输出模式

比如PHPStan可以去掉--error-format=raw,用默认格式输出;PHPMD可以换用text输出格式直接查看结果:

- name: Run PHPMD with text output
  run: php /usr/local/bin/phpmd.phar ./app/Exceptions,./app/Http,./app/Models,./app/Contracts,./app/Repositories,./app/Services,./routes,./tests text ./phpmd.xml

内容的提问来源于stack exchange,提问作者ryo-kozin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:37:53