定制 dbublik/unused-class-hunter 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dbublik/unused-class-hunter

最新稳定版本:v1.5.1

Composer 安装命令:

composer require dbublik/unused-class-hunter

包简介

Detects unused classes in your codebase

README 文档

README

Detects unused classes in your PHP codebase.

PHP Version Requirement License Tests Lint Code coverage Mutation score

Installation

composer require --dev dbublik/unused-class-hunter

Usage

After installation, you can run the following command to start hunting:

./vendor/bin/unused-class-hunter hunt

And that’s it! The Hunter will scan your entire codebase and find all unused classes. If you want to delete them immediately, just run the command:

./vendor/bin/unused-class-hunter hunt --delete

Customization

Config:

Most likely, after the first run, the Hunter will find classes that are actually used. In this case you can help it by creating a configuration file .unused-class-hunter.php in the root of the project:

<?php

declare(strict_types=1);

use DBublik\UnusedClassHunter\Config;
use Symfony\Component\Finder\Finder;

$finder = Finder::create()
    ->in(__DIR__);

return (new Config())
    ->setFinder($finder);

If your config file has another path, you can specify this via the "config" option:

./vendor/bin/unused-class-hunter hunt --config=example/directory/.unused-class-hunter.php

Ignoring classes:

If you want to ignore certain classes, you have three options. The first two are to specify the classes or the attributes of these classes in the config:

<?php

declare(strict_types=1);

use DBublik\UnusedClassHunter\Config;

return (new Config())
    ->withIgnoredClasses(
        \ExampleNamespace\FirstExampleClass::class,
        \ExampleNamespace\SecondExampleClass::class,
    )
    ->withIgnoredAttributes(
        \ExampleNamespace\Attribute\ExampleAttribute::class,
    );

The third option is to use one of our "filter". In the engine of this project we use two filters - ClassFilter and AttributeFilter.

But there are other filters - for example ApiTagFilter (which filters classes with the tag @api). See all filters in directory /src/Filter.

Or you can create your own custom filter:

<?php

declare(strict_types=1);

namespace ExampleNamespace\Filter;

use DBublik\UnusedClassHunter\Filter\FilterInterface;
use DBublik\UnusedClassHunter\ValueObject\ClassNode;
use DBublik\UnusedClassHunter\ValueObject\ReaderResult;

final readonly class ExampleFilter implements FilterInterface
{
    #[\Override]
    public function isIgnored(ClassNode $class, ReaderResult $reader): bool
    {
        return str_starts_with($class->getName(), 'BadName');
    }
}
<?php

declare(strict_types=1);

use DBublik\UnusedClassHunter\Config;

return (new Config())
    ->withFilters(
        new \ExampleNamespace\Filter\ExampleFilter(),
    );

Unignoring classes:

If classes are used as false positives, you can use our pre-filter or create your own. It helps indicate to the Hunter that the classes should be marked as unused.

For more details, see directory /src/PreFilter.

Sets for some libraries:

The Hunter contains several predefined sets for different libraries, which can be enabled with this config:

<?php

declare(strict_types=1);

use DBublik\UnusedClassHunter\Config;

return (new Config())
    ->withSets(
        symfony: true,
        doctrine: true,
        twig: true,
        phpunit: true,
        codeception: true,
    );

Custom cache directory:

By default, the Hunter stores its cache files in sys_get_temp_dir() . '/unused-class-hunter' (usually /tmp/unused-class-hunter). You can override this by setting the setCacheDir method:

<?php

declare(strict_types=1);

use DBublik\UnusedClassHunter\Config;

return (new Config())
    ->setCacheDir(__DIR__ . '/var/cache');

Custom bootstrap files:

If you need to initialize something in PHP runtime before the Hunter runs (like your own autoloader), you can provide your own bootstrap files:

<?php

declare(strict_types=1);

use DBublik\UnusedClassHunter\Config;

return (new Config())
    ->withBootstrapFiles(
        __DIR__ . '/example/bootstrap.php',
    );

Strict mode

If you want the strictest rules, you can enable this:

<?php

declare(strict_types=1);

use DBublik\UnusedClassHunter\Config;
use Symfony\Component\Finder\Finder;

return (new Config())
    ->allowStrictMode();

List of them:

  • Classes that are only listed in phpdoc are not considered to be used;

Output format

The Hunter supports text (by default), gitlab and github formats.

./vendor/bin/unused-class-hunter hunt --format=github

Supported PHP versions

PHP 8.2 and later.

统计信息

  • 总下载量: 14
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 8
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 8
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-02-16