staabm / annotate-pull-request-from-checkstyle
Requires
- php: ^5.3 || ^7.0 || ^8.0
- ext-libxml: *
- ext-simplexml: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16.1
README
将基于checkstyle的XML报告转换为GitHub拉取请求注解,通过Checks API。此脚本旨在用于GitHub Action中。这意味着您不再需要通过GitHub Action日志文件进行搜索。无需解释格式不同的消息。相反,您可以专注于您的拉取请求,而且无需离开拉取请求区域。
这意味着您不再需要搜索GitHub Action日志文件。无需解释格式不同的消息。相反,您可以专注于您的拉取请求,而且无需离开拉取请求区域。
图片来自 https://github.com/mheap/phpunit-github-actions-printer
安装
通过composer安装二进制文件
composer require staabm/annotate-pull-request-from-checkstyle --dev
💌 回馈一些爱
考虑支持此项目,以便我们可以更快地为每个人制作出更好的工具。
示例用法
cs2pr
可用于已存在的checkstyle报告xml文件。或者,您也可以使用它以unix-pipe语法将其链接到现有的cli命令中。
在您的GitHub Action工作流程中运行以下命令之一
处理checkstyle格式的文件
cs2pr /path/to/checkstyle-report.xml
可用选项
--graceful-warnings
: 如果只有警告,则不使用错误代码退出--colorize
: 为输出着色。如果相同的lint脚本应在本地命令行和远程GitHub Actions中使用,则此选项很有用。使用此选项,错误和警告在命令行上更容易区分,输出仍然与GitHub注解兼容--notices-as-warnings
将通知转换为警告。这可能很有用,因为GitHub不注释通知。--prepend-filename
在输出消息前添加文件名--prepend-source
当checkstyle生成工具提供source
属性时,在输出消息前添加源。
管道输出另一个命令
... 对任何生成checkstyle格式报告的命令都有效。
以下是一些示例
使用PHPStan
phpstan analyse --error-format=checkstyle | cs2pr
Phpstan 0.12.32引入了原生GitHub Action支持,因此您可能想使用这个代替
phpstan analyse
使用Psalm
psalm --output-format=checkstyle | cs2pr
Psalm甚至支持所需的格式,因此您可能想使用这个代替
psalm --output-format=github
使用PHP Coding Standards Fixer
php-cs-fixer fix --dry-run --format=checkstyle | cs2pr
使用PHP_CodeSniffer
phpcs --report=checkstyle -q /path/to/code | cs2pr
注意:-q
选项意味着不再在操作日志中显示输出。要同时在PR和操作日志中查看输出,请使用两个步骤,如下所示
- name: Check PHP code style id: phpcs run: phpcs --report-full --report-checkstyle=./phpcs-report.xml - name: Show PHPCS results in PR if: ${{ always() && steps.phpcs.outcome == 'failure' }} run: cs2pr ./phpcs-report.xml
使用PHP Parallel Lint
vendor/bin/parallel-lint . --exclude vendor --checkstyle | cs2pr
使用Laravel Pint
- name: Show Pint results in PR run: pint --test --format=checkstyle | cs2pr
注意:如果您想同时拥有日志和注解,需要运行两次pint
。
- name: Check PHP code style id: cs-check run: pint --test - name: Generate Annotations on CS errors if: failure() && steps.cs-check.outcome != 'success' run: pint --test --format=checkstyle | cs2pr
PHPUnit 支持吗?
PHPUnit 不支持 Checkstyle,因此 cs2pr
对您不起作用。
您可以尝试以下方法
示例 GithubAction 工作流程
如果您使用 shivammathur/setup-php
来设置 PHP,cs2pr
二进制文件包含在其中
# ... jobs: phpstan-analysis: name: phpstan static code analysis runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup PHP uses: shivammathur/setup-php@v1 with: php-version: 7.3 coverage: none # disable xdebug, pcov tools: cs2pr - run: | composer install # install your apps dependencies vendor/bin/phpstan analyse --error-format=checkstyle | cs2pr
如果您使用自定义的 PHP 安装,那么您的项目需要要求 staabm/annotate-pull-request-from-checkstyle
# ... jobs: phpstan-analysis: name: phpstan static code analysis runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup PHP run: # custom PHP installation - run: | composer install # install your apps dependencies composer require staabm/annotate-pull-request-from-checkstyle # install cs2pr vendor/bin/phpstan analyse --error-format=checkstyle | vendor/bin/cs2pr
将 cs2pr 作为 GitHub Action 使用
您还可以使用 cs2pr
本身作为 GitHub Action。如果您想将其用于不使用 PHP 的项目,或者想使用自定义的 PHP 安装,这将很有用。
请参阅 cs2pr GitHub Action 仓库 中的示例。
资源
想法
此脚本基于 Benjamin Eberlei 的建议
代码灵感来自 https://github.com/mheap/phpunit-github-actions-printer