快速扫描源代码中调用 Ray

dev-main 2024-03-16 20:38 UTC

This package is auto-updated.

Last update: 2024-09-16 21:50:22 UTC


README

x-ray logo

Package Version license Test Run Status Downloads

此包可以快速扫描源代码中调用 ray()rd()Ray::* 以及来自 spatie/rayspatie/laravel-ray 包的 ->ray() 辅助方法。

主要用例是在部署前无法在源代码中保留对 ray() 的调用,即使 ray 被禁用。此包不会删除调用,它只是显示它们的位置,以便可以手动删除。

如果未找到 ray 调用,则 x-ray 命令的退出代码为零,如果找到调用,则退出代码非零。这允许在 Github Workflows 等自动化环境中使用此包。

有关下载 Ray 调试应用程序的信息,请访问 myray.app

安装

composer require spatie/x-ray --dev

使用方法

指定一个或多个有效的路径名称和/或文件名以进行扫描

./vendor/bin/x-ray ./app/Actions/MyAction.php ./app/Models/*.php ./tests --snippets

显示位于 ./src./tests 中的调用摘要表,同时忽略一些文件

./vendor/bin/x-ray \
  --summary \
  --ignore src/MyClass.php \
  --ignore 'test/fixtures/*.php' \
  ./src ./tests

显示每个文件名和通过/失败状态,以及紧凑的结果

./vendor/bin/x-ray ./app --compact --verbose

可用选项

配置文件

在项目的根目录中创建一个名为 x-ray.ymlx-ray.yml.dist 的文件以配置包。

如果配置文件存在,则必须具有根部分 functionspaths

每个部分可以有一个 ignoreinclude 项,两者或都不存在。每个项包含一个字符串数组,如果两者都存在,则包括覆盖忽略项。每个项包含一个数组,如果存在条目,则包括覆盖忽略项。添加一个 * 项以忽略或包含所有匹配项 (确保引号中的星号)

默认情况下,functions.include 匹配 rayrd 函数。

functions:
  include:
    - '*'

paths:
  include:
    - 'tests/fixtures/*'
  ignore:
    - tests
    - 'SettingsTest.php'

自动化

x-ray 不仅设计为手动实用工具,还可以与自动化工具结合使用。

Github workflows

您可以在 Github workflow 中使用 x-ray 以确保不会提交任何 ray() 调用。

以下示例工作流程使用 PHPUnit 运行单元测试,然后运行 x-ray

name: run-tests

on: 
  push:
    branches:
      - main
  pull_request:

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: true
      matrix:
        os: [ubuntu-latest]
        php: [8.3, 8.2, 8.1]

    name: P${{ matrix.php }} - ${{ matrix.os }}

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo
          coverage: pcov

      - name: Setup problem matchers
        run: |
          echo "::add-matcher::${{ runner.tool_cache }}/php.json"
          echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"

      - name: Install dependencies
        run: composer update --prefer-stable --prefer-dist --no-interaction

      - name: Execute tests
        run: ./vendor/bin/phpunit
        
      - name: Check for ray calls
        run: ./vendor/bin/x-ray . --compact

Git hooks

在某些情况下,您可能想使用 git pre-commit 钩子以避免提交任何 ray() 调用

#!/bin/sh

echo "Checking for ray() calls...\n"

x-ray -s .
rayScanExitCode=$?

printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' -

localPreCommitExitCode=0
if [ -e ./.git/hooks/pre-commit ]; then
    ./.git/hooks/pre-commit "$@"
    localPreCommitExitCode=$?
fi

exit $rayScanExitCode || $localPreCommitExitCode

您还可以在 package.json 配置中使用 x-ray 与 husky

...
"husky": {
    "hooks": {
        "pre-commit": "lint-staged && .x-ray -s ."
    }
},
....

截图

可以在 文档 中查看各种截图。

测试

./vendor/bin/phpunit

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请审查 我们的安全策略 了解如何报告安全漏洞。

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件