RephactorとScisrはどちらも、PHP用の自動リファクタリングツールです。どちらも開発中であり、同じリファクタリング機能を提供します。誰かが両方のツールの正確な違いを教えてもらえますか?
2 に答える
私はScisrを書いたので、おそらく私はいくつかの洞察を提供することができます。簡単に言えば、それらは単に異なるツールであるということです。それぞれに機能のサブセットがあり、両方、一方、またはどちらも希望どおりの機能を提供していない場合があります。それぞれが、開発者が実装に取り掛かった一連の機能を提供します。つまり、やや不完全です。
より長い(そしてわずかに偏った)答えは、それらが哲学的に異なるということです。幸いなことに、どちらのツールも、各開発者が作成しようとしているものの感覚を与えるはずの小さな紹介文を提供します。これがRefhactorのもので、これがScisrのものです。
私が見つけたすべてのPHPリファクタリングツール(リファクタリングを含む)を試し、それらすべてに不満を持った後、Scisrを作成しました。rephactorは、私が試したすべてのツールの中で間違いなく最も便利でしたが、要求が多すぎると思いました。SVN、テストツール、およびその他のあらゆる種類のものに接続したかったのです。これらはすべて従うべき良いプロセスでしたが、統合する必要があるため、ツールを選択してすぐにプロジェクトで使用することができませんでした。そこで私は、よりシンプルな単一目的のツールを書き始め、Scisrが誕生しました。
IIRCまた、refhactorのソースコードを調べたところ、正規表現や不適切と思われるその他のソリューションを使用していることがわかりました。しかし、私は覚えていない可能性がありますので、その声明の誤りを許してください。
もう1つの考慮事項は、製品の健全性です。残念ながら、どちらのプロジェクトも多かれ少なかれ非アクティブです。Scisrは最近更新され、プルリクエストを引き続き受け付けていますが、これ以上積極的に取り組んでいません。Rephactorの最終更新日は2009年です。
2019+回答
上記の両方のパッケージは2013年以降廃止されているようです。それでも、インスタントリファクタリングの必要性はまだ残っているので、1日あたり200ダウンロードで活発に開発されている2019年の代替案を共有したいと思います。
2017年に、私はRectorという小さなプロジェクトを開始しました:https ://github.com/rectorphp/rector
レクターはあなたが手動で行うことなら何でもあなたを助けることができます
それがサポートする箱から出して:
- クラス、メソッド、プロパティ、名前空間、定数の名前を変更します...何でも:)
- 引数の追加、置換、または削除
- パラメータを追加するか、docblockを使用せずに型宣言を返します-静的分析のみを使用します
- PHP5.3からPHP7.4にアップグレードします
- あるPHPフレームワークから別のPHPフレームワークに移行する
- PHP7.4のプロパティタイプ宣言を完了する
- Laravelを依存性注入に静的に変える
- ..。
これはCLIツールであり、使いやすいです。
composer require rector/rector --dev
vendor/bin/rector process src --level code-quality