voku/phpstan-rules
最新稳定版本:3.6.0
Composer 安装命令:
composer require voku/phpstan-rules
包简介
Provides additional rules for phpstan/phpstan.
README 文档
README
phpstan-rules
Provides additional rules for phpstan/phpstan.
Installation
Run
$ composer require --dev voku/phpstan-rules
Usage
All the rules provided (and used) by this library are included in rules.neon.
When you are using phpstan/extension-installer, rules.neon will be automatically included.
Otherwise, you need to include rules.neon in your phpstan.neon:
includes: - vendor/voku/phpstan-rules/rules.neon
Rules
IfConditionHelper
This helper is used by different "condition"-rules: if - and - or - not - ternary
💡 We use this "hack" (helper) to run the check for all kind of conditions.
- double negative string conditions. e.g.
(string)$foo != ''is the same as(string)$foo - double negative integer conditions. e.g.
(int)$foo != 0is the same as(int)$foo - double negative boolean conditions. e.g.
(bool)$foo != falseis the same as(bool)$foo - double negative null conditions. Use "!==" instead if needed
- check 0 vs '' conditions, the behavior was changed in PHP 8
- check possible insane comparisons. e.g.
0 == '0foo', the behavior was changed in PHP 8 - check insane comparisons. e.g.
0 === '0'orfalse && true - check non-empty string is never empty
- check non-empty string is always empty
- check non-empty array is never empty
- do not compare objects with another type
- do not use magic string-concat for objects with "__toString()"
- do not allow assignments. e.g.
if ($a = 0)(see "checkForAssignments") - do not allow Yoda conditions. e.g.
ìf (0 == $a)(see "checkYodaConditions")
Configuration
If you want to configure a list of classes / subclasses that can NOT be used in conditions directly:
e.g.:
- ok:
if ($emailValueObject->isValid()) - error:
if ($emailValueObject != '')
parameters: voku: classesNotInIfConditions: [ AbstractValueObject ]
If you want to check assignments e.g. in "if"-conditions you can use this:
parameters: voku: checkForAssignments: true
If you want to check Yoda conditions can use this:
parameters: voku: checkYodaConditions: true
ExtendedBinaryOpRule
This rule will check "+", "*", "/", "-", ... (operators) and "." (concatenation) for compatible types.
It's included in the default rules.neon so that you don't need to add it manually.
DisallowedCallMethodOnNull
This code is copy&pasted from [phpstan/phpstan-src] and I used it to prevent Call to a member function on null errors while I wasn't already on level 8 where all kind of "NULL" checks are already covered by default.
e.g.
rules: - voku\PHPStan\Rules\DisallowedCallMethodOnNullRule
Support
For support and donations please visit Github | Issues | PayPal | Patreon.
For status updates and release announcements please visit Releases | Twitter | Patreon.
For professional support please contact me.
Thanks
- Thanks to GitHub (Microsoft) for hosting the code and a good infrastructure including Issues-Managment, etc.
- Thanks to IntelliJ as they make the best IDEs for PHP and they gave me an open source license for PhpStorm!
- Thanks to Travis CI for being the most awesome, easiest continous integration tool out there!
- Thanks to StyleCI for the simple but powerfull code style check.
- Thanks to PHPStan && Psalm for relly great Static analysis tools and for discover bugs in the code!
统计信息
- 总下载量: 79.16k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 31
- 点击次数: 1
- 依赖项目数: 5
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-02-17