tomasvotruba/unused-public

检测代码中未使用的公共属性、常量和方法

安装量: 1,228,899

依赖者: 73

建议者: 0

安全: 0

星标: 141

关注者: 4

分支: 11

开放问题: 0

类型:phpstan-extension


README



查找未使用的私有类元素很容易,因为它们在类内部没有被使用。那么公共方法/属性/常量呢?

 final class Book
 {
     public function getTitle(): string
     {
         // ...
     }

-    public function getSubtitle(): string
-    {
-        // ...
-    }
}

我们如何检测未使用的公共元素呢?

  • 查找公共方法
  • 在代码和模板中查找所有公共方法调用
  • 如果未找到公共方法,它可能未被使用

这正是这个包所做的事情。


这项技术对于私有项目和检测意外使用的 public 修饰符非常有用,这些修饰符应该更改为 private 以供本地调用。


安装

composer require tomasvotruba/unused-public --dev

该包适用于 PHP 7.2+ 版本。


用法

使用 PHPStan 扩展安装器,一切就绪。

通过简单的配置启用每个项目

# phpstan.neon
parameters:
    unused_public:
        methods: true
        properties: true
        constants: true

你有数百个报告的公共方法吗?你没有时间检查它们所有,但想逐步处理它们吗?

设置最大允许 % 配置

# phpstan.neon
parameters:
    unused_public:
        methods: 2.5

这意味着最多 2.5% 的所有公共方法被视为未使用是允许的

  • 如果是 5%,你会收到警告。
  • 如果是 1%,它将被跳过,作为容许。

你想检查不应该删除但应改为 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;
    }
}