ghostwriter / psalm-sandbox
提供测试 Psalm 插件的框架
Requires
- php: >=8.1 <8.3
- composer-runtime-api: >=2.2.2
- ext-simplexml: *
- composer/semver: ^3.3.2
- ghostwriter/collection: ^1.3.2
- ghostwriter/config: ^0.4.1
- ghostwriter/container: ^1.6
- ghostwriter/event-dispatcher: ^1.5.0
- ghostwriter/json: ^1.1
- ghostwriter/option: ^1.5.1
- ghostwriter/result: ^1.3
- phpunit/phpunit: ^10.2.7
Requires (Dev)
- ghostwriter/coding-standard: dev-main
- ghostwriter/psalm-plugin: ^0.1.0
This package is auto-updated.
Last update: 2024-09-08 23:47:26 UTC
README
工作正在进行中
警告
该项目尚未完成,仍在开发中。
安装
您可以通过 composer 安装此包
composer require ghostwriter/psalm-sandbox --dev
使用方法
您可以通过扩展 AbstractPsalmSandboxTestCase
类来为您的插件创建测试。
例如:tests/Unit/MyPsalmPluginTest.php
<?php declare(strict_types=1); namespace Vendor\PackageTests\Unit; use Ghostwriter\PsalmSandbox\AbstractPsalmSandboxTestCase; use Psalm\Issue\CodeIssue; use Psalm\Issue\MissingReturnType; use Psalm\Plugin\PluginEntryPointInterface; use Vendor\Package\MyPsalmPlugin; final class MyPsalmPluginTest extends AbstractPsalmSandboxTestCase { /** * @var class-string<PluginEntryPointInterface> */ public const PLUGIN = MyPsalmPlugin::class; /** * @var array<class-string<CodeIssue>> */ public const ISSUES = [MissingReturnType::class]; }
然后,您可以使用 PHPUnit 运行您的测试。
vendor/bin/phpunit
插件开发
示例目录结构
您的插件应该具有以下目录结构
composer.json
MyPsalmPlugin.php
src/
│ {PsalmIssueType}/
│ │ {FixIssue}.php
│ │ {ReportIssue}.php
│ │ {SuppressIssue}.php
│ MissingReturnType/
│ │ FixMissingReturnType.php
│ │ ReportMissingReturnType.php
│ │ SuppressMissingReturnType.php
tests/
│ Fixture/
│ │ {PsalmIssueType}/
│ │ │ fix-{PsalmIssueType}.php.inc
│ │ │ report-{PsalmIssueType}.php.inc
│ │ │ suppress-{PsalmIssueType}.php.inc
│ │ MissingReturnType/
│ │ │ fix-0001.php.inc
│ │ │ fix-missing-returntype.php.inc
│ │ │ report-0001.php.inc
│ │ │ report-missing-returntype.php.inc
│ │ │ suppress-0001.php.inc
│ │ │ suppress-missing-returntype.php.inc
│ Unit/
│ │ MyPsalmPluginTest.php
示例 Fix
测试
当您运行 vendor/bin/psalm --alter
时,它将自动为您修复代码。
要创建一个 Fix
测试,您需要在 tests/Fixture/{PsalmIssueType}
目录中创建一个文件。
文件名应以 fix-
和任何唯一标识符(例如,fix-0001.php.inc
)开头。
文件必须使用 <!-- SEPARATOR -->
来分隔 before
和 after
代码。
文件的结构应如下所示
<?php declare(strict_types=1); namespace Vendor\PackageTests\Fixture\MissingReturnType; final class FixMissingReturnType { public function fixMissingReturnType() { } } ?> <!-- SEPARATOR --> <?php declare(strict_types=1); namespace Vendor\PackageTests\Fixture\MissingReturnType; final class FixMissingReturnType { public function fixMissingReturnType(): void { } } ?>
示例 Report
测试
当您运行 vendor/bin/psalm
时,它将在您的代码中报告问题。
要创建一个 Report
测试,您需要在 tests/Fixture/{PsalmIssueType}
目录中创建一个文件。
文件名应以 report-
和任何唯一标识符(例如,report-0001.php.inc
)开头。
文件的结构应如下所示
<?php declare(strict_types=1); namespace Vendor\PackageTests\Fixture\MissingReturnType; final class ReportMissingReturnType { public function reportMissingReturnType() { } }
示例 Suppress
测试
您可以通过添加 @psalm-suppress
注释、将抑制添加到您的 psalm.xml
文件或使用插件来抑制您的代码中的问题。
要创建一个 Suppress
测试,您需要在 tests/Fixture/{PsalmIssueType}
目录中创建一个文件。
文件名应以 suppress-
和任何唯一标识符(例如,suppress-0001.php.inc
)开头。
文件的结构应如下所示
<?php declare(strict_types=1); namespace Vendor\PackageTests\Fixture\MissingReturnType; final class SuppressMissingReturnType { /** * @psalm-suppress MissingReturnType */ public function suppressMissingReturnType() { } }
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG.md
安全
如果您发现任何与安全相关的问题,请通过电子邮件 nathanael.esayeas@protonmail.com
联系,而不是使用问题跟踪器。
支持
谢谢
以认可那些为社区创建和维护有价值项目的成员的努力。
感谢 Bruce Weirdan 为原始 psalm/codeception-psalm-module
所做的贡献,这为我工作的起点。
感谢 Matt Brown,他是 vimeo/psalm
的创造者,这是一个出色的 PHP 静态分析工具。
特别感谢 @orklah 维护 vimeo/psalm
,确保其持续改进和功能。
致谢
许可协议
BSD-3-Clause 许可协议。有关更多信息,请参阅 许可文件