我可以自动重构整个java项目并将大写方法参数重命名为小写吗?

我可以自动重构整个java项目并将大写方法参数重命名为小写吗?,java,ide,refactoring,intellij-idea,Java,Ide,Refactoring,Intellij Idea,我在一个java项目中工作,其中很大一部分代码是用我不喜欢的格式风格编写的(也是非标准的),即所有方法参数都是大写的(以及所有局部变量) 在IntellJ上,我能够使用“分析->检查代码”,并实际查找所有出现的大写方法参数(超过1000个) 为了修复一个问题,我可以执行“重构>重命名参数”,并且效果很好(假设没有重叠) 是否有一种方法可以自动执行此重构(例如:将以大写字母开头的方法参数重命名为以小写字母开头的相同名称)?我建议您在执行任何操作之前考虑以下几点: 如果这是团队的努力,请通知您的团队

我在一个java项目中工作,其中很大一部分代码是用我不喜欢的格式风格编写的(也是非标准的),即所有方法参数都是大写的(以及所有局部变量)

在IntellJ上,我能够使用“分析->检查代码”,并实际查找所有出现的大写方法参数(超过1000个)

为了修复一个问题,我可以执行“重构>重命名参数”,并且效果很好(假设没有重叠)


是否有一种方法可以自动执行此重构(例如:将以大写字母开头的方法参数重命名为以小写字母开头的相同名称)?

我建议您在执行任何操作之前考虑以下几点:

  • 如果这是团队的努力,请通知您的团队
  • 如果这是给雇主的,通知你的老板
  • 如果将其检查到版本控制系统中,请意识到wazoo中会出现差异
  • 如果未签入版本控制系统,请将其签入
  • 在进行任何更改之前,请先进行备份
  • 看看你是否有一些测试要检查之前和之后的行为没有改变
  • 这是一个危险的重构。小心点

    使用源解析器 我认为您需要做的是使用类似的源代码解析器来完成这项工作

    对于每个java源文件,将其解析为一个编译单元,可能用作基类,并重写(至少)。然后将更改后的CompliationUnit写入一个新文件,然后进行差异处理


    我建议不要更改原始源文件,但创建一个影子文件树可能是个好主意(例如,旧文件:
    src/main/java/com/mycompany/MyClass.java
    ,新文件
    src/main/refactured/com/mycompany/MyClass.java
    ,这样可以区分整个目录).

    我不知道IDE中有任何直接支持这种开箱即用的重构。因为大多数IDE都支持名称重构(经常使用)。您可能需要编写一些IDE插件,可以浏览源代码(AST)并在后台调用重命名重构,以获得与这种格式匹配的参数名。

    我使用TextPad或WildPad,以及一堆reg ex replace all,对相当大规模的文件进行了大量此类重构。一直为我工作

    我相信,如果首先使用像Eclipse这样的IDE对代码进行格式化(如果没有正确格式化),然后可以设计一个包含方法签名(范围、返回类型、名称、括号、参数列表、括号)的reg ex,那么使用这些工具,您的工作将在几秒钟内完成。您可能需要多个reg-ex替换所有组

    唯一需要花费时间的活动就是拿出这样一套reg-ex


    希望这有帮助

    什么操作系统?听起来像是sed/awkI的工作。我认为操作系统在这里并不重要。我需要的是一个“java结构”替换,而sed/awk并不是真正理想的替代品。使用sed解析java就像使用regex解析html一样。不要这样做,找一个懂这种语言的工具。事实上,批处理重构会很好,但我实际上不知道有什么工具可以做到这一点。还要找
    类。forName
    -它们的意思是“不要碰!”我不同意关于这是一个危险重构的评论。尤其是重命名方法参数是最安全的重构。同意你应该通知你的团队,但不需要仅仅为了更名而做一个完整的项目……因为规模太大而很危险。我同意重命名一个变量是无害的,但是如果整个项目写得不正确,那么你就有更大的可能遗漏一些东西并破坏整个项目。没有迹象表明OP计划将这一行动通知任何人。教育和宣传的机会就会失去。但你有权发表你的意见,当然。工作起来一定很复杂,因为各个层次都有变化。我能想到的唯一明智的选择是编写IDE脚本。最终这实际上是解决方案。最终没有那么多代码,没有更改现有代码的格式,只有参数。