michabbb-backup / x-ray
快速扫描源代码中调用 Ray
Requires
- php: ^8.0
- permafrost-dev/code-snippets: ^1.2.0
- permafrost-dev/php-code-search: ^1.10.5
- symfony/console: ^5.3|^6.0|^7.0
- symfony/finder: ^5.3|^6.0|^7.0
- symfony/yaml: ^5.3|^6.0|^7.0
Requires (Dev)
- phpstan/phpstan: ^1.10.60
- phpunit/phpunit: ^9.5
- spatie/phpunit-snapshot-assertions: ^4.2
This package is auto-updated.
Last update: 2024-09-16 21:50:22 UTC
README
此包可以快速扫描源代码中调用 ray()
、rd()
、Ray::*
以及来自 spatie/ray 和 spatie/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.yml
或 x-ray.yml.dist
的文件以配置包。
如果配置文件存在,则必须具有根部分 functions
和 paths
。
每个部分可以有一个 ignore
或 include
项,两者或都不存在。每个项包含一个字符串数组,如果两者都存在,则包括覆盖忽略项。每个项包含一个数组,如果存在条目,则包括覆盖忽略项。添加一个 *
项以忽略或包含所有匹配项 (确保引号中的星号)。
默认情况下,functions.include
匹配 ray
和 rd
函数。
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)。有关更多信息,请参阅 许可文件。