2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Laravel]rectorで未使用のuse文を一括削除する

Posted at

この記事で説明すること

rectorという自動リファクタリングツールを使って未使用のuse文を一括削除する方法を説明!

課題感

なんか使ってるか使っていないかわからないが、未使用なuse文がたくさんコード上に存在している!
手動で消すのもファイル数が多くてめんどくさい!!って人向けに、秘術をお伝えします!

これで君もいちいちコードに「使っていないんかーーーい!!」と突っ込まなくて済む快適なエンジニアライフを送れるはずだ!!

筆者の動作環境

  • laravel10系
  • composerが動く!

まず動かしてみる

インストール

composer require rector/rector --dev

rector.phpを修正

下記コードをもとに、動作させたいディレクトリのパスを入れる!

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;


return static function (RectorConfig $rectorConfig): void {
    // rectorを動作させたいパスを指定する
    $rectorConfig->paths([
//        __DIR__ . '/app',
    ]);

    // rector内で動作させたい設定を呼ぶ
    $rectorConfig->removeUnusedImports();

    $rectorConfig->rules([
        // こちらに追加したいルールを記載する
        // 例
        Rector\Arguments\Rector\MethodCall\RemoveMethodCallParamRector::class,
        // @see https://github.com/rectorphp/rector-phpunit/blob/main/docs/rector_rules_overview.md
        // @see https://github.com/rectorphp/rector/blob/main/docs/rector_rules_overview.md
    ]);

    $rectorConfig->skip([
        // SKIPしたいルールをこちらに記載する
    ]);

    $rectorConfig->sets([
        // ルールセットを記載する
    ]);
};

コマンド実行

/vendor/bin/rector process --dry-run

実行完了すると、対象ファイル数と対処箇所がコンソール上に出力される
image.png

dry-runオプションを消すことで、実際のコードにも反映できる

/vendor/bin/rector process

他にも

色々と自動リファクタリングできる!

  • コード品質の向上
  • デッドコードの削除
  • テストコードの品質向上
  • PHPバージョンアップ対応

まとめ

コードにツッコミを入れながら読むようなエンジニアは、rectorを使うことで、「こんなに修正箇所あるんかーーい」と自分の見る目のなさにツッコミを入れることになるかもしれない。
ただ、それは今まで見えてなかった事象が見えたという観点での成長のチャンスかもしれない。
めげずにエンジニアライフを満喫して欲しいと心から思いながら、この記事を締めさせていただきたいと思う

敬具

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?