Rephactor和Scisr PHP重构工具之间的区别是什么?

Rephactor和Scisr PHP重构工具之间的区别是什么?,php,refactoring,Php,Refactoring,Rephactor和Scisr都是PHP的自动重构工具。两者都在开发中,提供相同的重构功能。有人能告诉我这两种工具的确切区别吗?我写了Scisr,所以也许我可以提供一些见解。简而言之,它们只是不同的工具。它们都有一个子集的功能,你可能会发现两者,一个,或者两者都不提供你想要的确切功能。每一个都提供了开发人员用来实现的一组功能,即有些不完整 更长的答案(也稍微有点偏颇)是它们在哲学上是不同的。幸运的是,这两个工具都提供了一些介绍性的简介,让您了解每个开发人员打算创建什么。和 在尝试了我能找到的所有

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

我写了Scisr,所以也许我可以提供一些见解。简而言之,它们只是不同的工具。它们都有一个子集的功能,你可能会发现两者,一个,或者两者都不提供你想要的确切功能。每一个都提供了开发人员用来实现的一组功能,即有些不完整

更长的答案(也稍微有点偏颇)是它们在哲学上是不同的。幸运的是,这两个工具都提供了一些介绍性的简介,让您了解每个开发人员打算创建什么。和

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

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


另一个考虑因素是产品健康。不幸的是,这两个项目或多或少都处于非活动状态。Scisr是最近更新的,我仍然接受pull请求,但我不再积极处理它了。Rephactor上一次更新是在2009年。

我写了Scisr,所以也许我可以提供一些见解。简而言之,它们只是不同的工具。它们都有一个子集的功能,你可能会发现两者,一个,或者两者都不提供你想要的确切功能。每一个都提供了开发人员用来实现的一组功能,即有些不完整

更长的答案(也稍微有点偏颇)是它们在哲学上是不同的。幸运的是,这两个工具都提供了一些介绍性的简介,让您了解每个开发人员打算创建什么。和

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

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

另一个考虑因素是产品健康。不幸的是,这两个项目或多或少都处于非活动状态。Scisr是最近更新的,我仍然接受pull请求,但我不再积极处理它了。Rephactor上次更新是在2009年。

2019+答案 看起来上述两个软件包自2013年以来都已过时。然而,即时重构的需求仍然存在,所以我想与大家分享正在积极开发的2019种替代方案

2017年,我启动了一个名为Rector的小项目:

校长可以帮助你做任何你手动做的事情 只需打开它支持的盒子:

  • 重命名类、方法、属性、命名空间、常量。。。任何东西:)
  • 添加、替换或删除参数
  • 添加不带docblocks的参数或返回类型声明-仅使用静态分析
  • 从PHP5.3升级到PHP7.4
  • 从一个PHP框架迁移到另一个PHP框架
  • 完成PHP7.4属性类型声明
  • 将Laravel静态转换为依赖项注入
这是一个易于使用的CLI工具:

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

2019+答案 看起来上述两个软件包自2013年以来都已过时。然而,即时重构的需求仍然存在,所以我想与大家分享正在积极开发的2019种替代方案

2017年,我启动了一个名为Rector的小项目:

校长可以帮助你做任何你手动做的事情 只需打开它支持的盒子:

  • 重命名类、方法、属性、命名空间、常量。。。任何东西:)
  • 添加、替换或删除参数
  • 添加不带docblocks的参数或返回类型声明-仅使用静态分析
  • 从PHP5.3升级到PHP7.4
  • 从一个PHP框架迁移到另一个PHP框架
  • 完成PHP7.4属性类型声明
  • 将Laravel静态转换为依赖项注入
这是一个易于使用的CLI工具:

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

1。它们有不同的名称。请参阅PHP重构工具讨论。1。它们有不同的名称。有关PHP重构工具的讨论,请参阅。我同意Ian的观点,即“正则表达式”[是的,Rephactor使用regexps]对于构建重构工具来说是不充分的(很难描述其不充分程度)。我很高兴听到Scisr不使用regexp。那么它用的是什么呢?@IraBaxter,它用的是,所以它实际上是在解析你的代码,并且可以在这个级别上对代码进行操作(如果你想说得更具体一些,我实际上是在使用它,因为它用一些我喜欢的额外特性增强了标记器)。我同意Ian的观点,“正则表达式”[是的,Rephactor使用regexps]是不够的(很难描述其不足之处)来构建重构工具。我很高兴听到Scisr没有使用regexps