ngmy / unused-public
检测代码中的未使用公共属性、常量和方法
    dev-main
    2024-02-13 21:14 UTC
Requires
- php: ^8.1
- phpstan/phpstan: ^1.10
- webmozart/assert: ^1.11
Requires (Dev)
- nikic/php-parser: ^4.18
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.3
- phpunit/phpunit: ^10.3
- rector/rector: ^0.18.2
- symplify/easy-ci: ^11.2
- symplify/easy-coding-standard: ^12.0
- tomasvotruba/class-leak: ^0.1.3
- tomasvotruba/cognitive-complexity: ^0.2.2
- tomasvotruba/type-coverage: ^0.2
- tracy/tracy: ^2.10
This package is auto-updated.
Last update: 2024-09-15 15:21:00 UTC
README
 
很容易找到未使用的私有类元素,因为它们在类本身中没有使用
 final class Book
 {
     public function getTitle(): string
     {
         // ...
     }
-    private function getSubtitle(): string
-    {
-        // ...
-    }
}
那么公共类元素怎么办呢?
我们如何检测这样的元素呢?
- 找到一个例如公共方法
- 找到所有公共方法调用
- 通过简单的diff比较它们
- 如果未找到公共方法,则可能未使用
这正是这个包所做的。
这项技术在私有项目中非常实用,用于检测意外公开的公共API,这些API应仅在本地上使用。
安装
composer require tomasvotruba/unused-public --dev
该包在标记的版本中在PHP 7.2-8.1版本上可用。
使用方法
使用 PHPStan扩展安装程序,一切准备就绪。
通过简单的配置启用每个项目
# phpstan.neon parameters: unused_public: methods: true properties: true constants: true
您想检查仅本地使用的、不应删除但应改为 private/protected 的方法调用吗?
# phpstan.neon parameters: unused_public: local_methods: true
排除模板中的方法调用
一些方法仅在TWIG或Blade模板中使用,可能会被误报为未使用。
{{ book.getTitle() }}
如何排除它们?在配置中将您的TWIG或Blade模板目录添加到排除方法名称中
# phpstan.neon parameters: unused_public: template_paths: - templates
已知限制
在某些情况下,规则报告了误报
- 当仅用于模板时(除了Twig路径外),无法检测它们
跳过仅公共方法
开源供应商设计公共API以供项目使用。元素被报告为未使用,但实际上它设计为公开使用吗?
使用@api注解标记类或元素以跳过它
final class Book { /** * @api */ public function getName() { return $this->name; } }
仅在测试中使用的公共方法
一些公共方法设计为仅在测试中使用。元素被报告为未使用,但实际上它在测试中使用吗?
使用@internal注解标记类或元素以报告为使用
final class Book { /** * @internal */ public function getName() { return $this->name; } }