1

Rephactor 和 Scisr 都是 PHP 的自动重构工具。两者都在开发中,并提供相同的重构功能。谁能告诉我这两种工具的确切区别?

4

2 回答 2

3

我写了 Scisr,所以也许我可以提供一些见解。简短的回答是它们只是不同的工具。它们每个都有一个功能子集,您可能会发现两者、一个或都不提供您想要的确切功能。每一个都提供了开发人员可以实现的一组特性——即有些不完整。

更长(并且稍微偏颇)的答案是它们在哲学上是不同的。幸运的是,这两个工具都提供了一些介绍性的简介,可以让您了解每个开发人员打算创建的内容。这里是 Rephactor 的这里是 Scisr 的

在尝试了所有我能找到的 PHP 重构工具(包括 rephactor)并且对所有这些工具都不满意后,我写了 Scisr。rephactor 绝对是我尝试过的所有工具中最有用的,但我认为它提出了太多要求——它想连接到 SVN、测试工具和各种其他东西。这些都是值得遵循的好流程,但集成的需要意味着我无法选择该工具并立即在我的项目中使用它。于是我着手编写一个更简单、单一用途的工具,于是 Scisr 诞生了。

IIRC 我还查看了 rephactor 的源代码,发现它使用正则表达式和其他我认为不足的解决方案。不过,我可能记错了,所以请原谅该声明中的任何不实之处。

另一个考虑因素应该是产品健康。不幸的是,这两个项目或多或少都是不活跃的。Scisr 最近更新了,我仍在接受拉取请求,但我不再积极致力于它。Rephactor 最后一次更新是在 2009 年。

于 2012-08-27T23:34:10.220 回答
1

2019+答案

看起来这两个包自 2013 年以来都已失效。但即时重构的需求仍然存在,所以我想分享 2019 年替代方案,它正在积极开发中,每天有 200 次下载

2017 年我开始了一个名为 Rector 的小项目:https ://github.com/rectorphp/rector

Rector 可以帮助您完成任何手动操作

开箱即用,它支持:

  • 重命名类、方法、属性、命名空间、常量……任何东西 :)
  • 添加、替换或删除参数
  • 添加没有文档块的参数或返回类型声明 - 仅使用静态分析
  • 从 PHP 5.3 升级到 PHP 7.4
  • 从一个 PHP 框架迁移到另一个
  • 完成 PHP 7.4 属性类型声明
  • 将 Laravel 静态转换为依赖注入
  • ...

它是一个 CLI 工具,易于使用:

composer require rector/rector --dev
vendor/bin/rector process src --level code-quality

阅读更多自述文件

于 2019-04-03T22:40:47.257 回答