staabm/annotate-pull-request-from-checkstyle

1.8.5 2023-05-08 15:56 UTC

This package is auto-updated.

Last update: 2024-08-30 21:14:23 UTC


README

Continuous Integration Continuous Deployment

将基于checkstyle的XML报告转换为GitHub拉取请求注解,通过Checks API。此脚本旨在用于GitHub Action中。这意味着您不再需要通过GitHub Action日志文件进行搜索。无需解释格式不同的消息。相反,您可以专注于您的拉取请求,而且无需离开拉取请求区域。

这意味着您不再需要搜索GitHub Action日志文件。无需解释格式不同的消息。相反,您可以专注于您的拉取请求,而且无需离开拉取请求区域。

Logs Example

上下文示例 图片来自 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 仓库 中的示例。

资源

GithubAction 问题匹配器

想法

此脚本基于 Benjamin Eberlei 的建议

代码灵感来自 https://github.com/mheap/phpunit-github-actions-printer