brainbits / phpstan-rules
PHPStan 扩展,包含严格且具有意见的规则,用于提高测试代码质量。
3.1.2
2024-02-21 11:06 UTC
Requires
- php: ^8.1
- nette/utils: ^4.0
- nikic/php-parser: ^4.3|^5.0
- phpstan/phpstan: ^1.0
Requires (Dev)
- brainbits/phpcs-standard: ^7.0
- php-coveralls/php-coveralls: ^2.0
- phpstan/phpstan-php-parser: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^10.5
README
此扩展为 PHPStan 静态分析工具提供了高度意见化和严格的测试用例规则。
安装
运行
$ composer require --dev brainbits/phpstan-rules
用法
此库提供的所有规则都包含在rules.neon
中。
当使用phpstan/extension-installer
时,rules.neon
将自动包含。
否则您需要将rules.neon
包含在您的phpstan.neon
中
# phpstan.neon includes: - vendor/brainbits/phpstan-rules/rules.neon
规则
此软件包为使用phpstan/phpstan
提供了以下规则
CoversClassExistsRule
此规则检查被@covers
注释或#[CoversClass]
属性覆盖的类是否存在。
CoversClassPresentRule
此规则强制您在单元测试中指定@covers
注释或#[CoversClass]
、#[CoversFunction]
或#[CoversNothing]
属性(默认:PHPUnit\Framework\TestCase
)。
原因
- 它防止代码覆盖率总和显示高于预期的值。
❌
// tests/ExampleTestCase/Unit/MyInvalidClassTest.php namespace ExampleTestCase\Unit; final class MyInvalidClassTest extends \PHPUnit\Framework\TestCase {}
✅
// tests/ExampleTestCase/Unit/MyClassTest.php namespace ExampleTestCase\Unit; #[\PHPUnit\Framework\Attributes\CoversClass(MyClass::class) final class MyClassTest extends \PHPUnit\Framework\TestCase {}
默认值
- 默认情况下,此规则通过检查命名空间(必须包含字符串
Unit
)和类名后缀(必须以字符串Test
结尾)来检测单元测试。
检测单元测试命名空间
如果您想更改上述的命名空间字符串检查,您可以在unitTestNamespaceContainsString
参数中设置自己的字符串进行检查。
# phpstan.neon parameters: brainbits: unitTestNamespaceContainsString: CustomTestPath