TomasVotruba/unused-public
GitHub: TomasVotruba/unused-public
一个 PHPStan 静态分析扩展,用于自动检测 PHP 代码中未使用的 public 方法、属性和常量,帮助开发者收紧不必要的公开访问权限。
Stars: 194 | Forks: 15
# 查找代码中未使用的 Public 元素
查找未使用的 private 类元素很容易,因为它们不会在类自身中使用。但是 public 方法/属性/常量呢? ``` final class Book { public function getTitle(): string { // ... } - public function getSubtitle(): string - { - // ... - } } ``` **我们如何检测未使用的 public 元素?** * 查找一个 public 方法 * 在代码和模板中查找所有 public 方法调用 * 如果未找到该 public 方法,则可能是未使用的 这正是这个包所做的事情。
这项技术对于私有项目非常有用,也可用于检测那些本应改为 `private`(因为仅在本地调用)却意外使用了 `public` 修饰符的情况。
## 安装 ``` composer require tomasvotruba/unused-public --dev ``` 该包适用于 PHP 7.2+ 版本。
## 用法 使用 [PHPStan extension installer](https://github.com/phpstan/extension-installer),一切都已准备就绪。 通过简单的配置逐个启用每个项目: ``` # phpstan.neon parameters: unused_public: methods: true properties: true constants: true ```
你是否有数百个被报告的 public 方法?你没有时间一一检查,但希望能逐步处理它们? 改为设置允许的最大百分比配置: ``` # phpstan.neon parameters: unused_public: methods: 2.5 ``` 这意味着允许所有 public 方法中最多有 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 路径外,无法检测到它们
## 跳过仅限 Public 的方法 开源供应商设计 public API 是供其他项目使用的。元素是否被报告为未使用,但实际上它是被设计为供 public 使用的? 使用 `@api` 注解标记该类或元素以跳过检查: ``` final class Book { /** * @api */ public function getName() { return $this->name; } } ```
查找未使用的 private 类元素很容易,因为它们不会在类自身中使用。但是 public 方法/属性/常量呢? ``` final class Book { public function getTitle(): string { // ... } - public function getSubtitle(): string - { - // ... - } } ``` **我们如何检测未使用的 public 元素?** * 查找一个 public 方法 * 在代码和模板中查找所有 public 方法调用 * 如果未找到该 public 方法,则可能是未使用的 这正是这个包所做的事情。
这项技术对于私有项目非常有用,也可用于检测那些本应改为 `private`(因为仅在本地调用)却意外使用了 `public` 修饰符的情况。
## 安装 ``` composer require tomasvotruba/unused-public --dev ``` 该包适用于 PHP 7.2+ 版本。
## 用法 使用 [PHPStan extension installer](https://github.com/phpstan/extension-installer),一切都已准备就绪。 通过简单的配置逐个启用每个项目: ``` # phpstan.neon parameters: unused_public: methods: true properties: true constants: true ```
你是否有数百个被报告的 public 方法?你没有时间一一检查,但希望能逐步处理它们? 改为设置允许的最大百分比配置: ``` # phpstan.neon parameters: unused_public: methods: 2.5 ``` 这意味着允许所有 public 方法中最多有 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 路径外,无法检测到它们
## 跳过仅限 Public 的方法 开源供应商设计 public API 是供其他项目使用的。元素是否被报告为未使用,但实际上它是被设计为供 public 使用的? 使用 `@api` 注解标记该类或元素以跳过检查: ``` final class Book { /** * @api */ public function getName() { return $this->name; } } ```
标签:ffuf, OpenVAS, PHP, PHPStan, SOC Prime, 开发工具, 死代码检测, 错误基检测, 静态代码分析