tomasvotruba/type-coverage
CLI tool for measuring PHP type coverage. Scans your codebase and reports how much is covered by native types and PHPDoc (params, returns, properties), helping you spot missing types, raise strictness, and improve static analysis readiness.
rector/type-perfect has been merged into tomasvotruba/type-coverage (#68). Its rules live in packages/type-perfect and keep the Rector\TypePerfect\ namespace, so existing ignoreErrors patterns still match.
The extension is registered automatically via phpstan/extension-installer — no extra includes needed.
If you use both packages, drop rector/type-perfect from composer.json to avoid duplicate rules:
"require-dev": {
"tomasvotruba/type-coverage": "^2.3",
- "rector/type-perfect": "^2.1"
}
Four rules used to report right after install, with no way off short of ignoreErrors. They now match the rest of the set — off by default, one parameter each (#69):
parameters:
type_perfect:
narrow_param: false
narrow_return: false
no_mixed: false
null_over_false: false
+ no_param_type_removal: false
+ no_array_access_on_object: false
+ no_isset_on_object: false
+ no_empty_on_object: false
Enable what you want:
parameters:
type_perfect:
narrow_param: true
narrow_return: true
no_mixed_property: true
no_mixed_caller: true
null_over_false: true
no_param_type_removal: true
no_array_access_on_object: true
no_isset_on_object: true
no_empty_on_object: true
What each of those 4 catches:
// no_isset_on_object / no_empty_on_object
if (isset($object->property)) { } // bad - hides typos and nulls
if ($object->property !== null) { } // good
// no_array_access_on_object
$object['key']; // bad
$object->getKey(); // good
// no_param_type_removal
public function run(string $name) // parent
public function run($name) // bad - child drops the type
return_type, param_type, property_type and constant_type behave exactly as in 2.2.2 — upgrading adds rules, it does not change existing measurements.
symfony/dom-crawler bumped to ^8.1 (dev only) (#70)Full Changelog: https://github.com/TomasVotruba/type-coverage/compare/2.2.2...2.3.0
Full Changelog: https://github.com/TomasVotruba/type-coverage/compare/2.0.2...2.1.0
How can I help you explore Laravel packages today?