Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java代码中自动删除方法_Java_Program Transformation - Fatal编程技术网

如何在java代码中自动删除方法

如何在java代码中自动删除方法,java,program-transformation,Java,Program Transformation,我需要删除一个大型java项目中的一些方法,我想知道是否有工具可以帮助我这样做。我基本上会指定一个签名和一个源文件夹,其中所有匹配的方法都将被删除 如果不存在这样的东西,那么我将编写一个脚本。你说的是“源代码转换”,谷歌发现了BeautyJ for Java的存在: BeautyJ可以将Java源代码转换为XML并返回。BeautyJ介绍了XJava格式,它将类或接口及其成员以及相关的源代码和Javadoc注释存储在一个XML文件中。BeautyJ通过其Sourclet API或通过将Java

我需要删除一个大型java项目中的一些方法,我想知道是否有工具可以帮助我这样做。我基本上会指定一个签名和一个源文件夹,其中所有匹配的方法都将被删除

如果不存在这样的东西,那么我将编写一个脚本。

你说的是“源代码转换”,谷歌发现了BeautyJ for Java的存在:

BeautyJ可以将Java源代码转换为XML并返回。BeautyJ介绍了XJava格式,它将类或接口及其成员以及相关的源代码和Javadoc注释存储在一个XML文件中。BeautyJ通过其Sourclet API或通过将Java源代码转换为XML并允许任何外部转换(例如通过应用XSLT),为Java源代码的自动结构化提供了广泛的可能性。”


不过,不知道您的案例是否如此简单,脚本是否比费劲学习如何使用这样的程序要好。尽管将其放入工具链中用于其他目的可能也是值得的。

如果您使用eclipse或其他功能强大的IDE,您可能已经内置了对此的支持。
有关实现所需的方法,请参阅。

今天,有几种方法可以实现此目的。例如,您可以告诉Eclipse编译器为您提供AST(请参阅)。您可以导航AST以查找方法并删除节点以更改源

这使得保持代码有效变得很容易。使用Eclipse代码格式化程序,您可以在以后清理格式

像这样的项目可以更进一步,分析整个项目,并为您提供搜索整个项目的方法。我刚刚发现,当您是初学者时,MoDisCo的文档并没有多大帮助。

我们的its可以用于此

DMS解析语言(使用其前端,在本例中为Java),构建AST和符号表,并提供基于自定义分析操作AST的工具。在本例中,OP希望提供方法签名(可能是在应该解释它的上下文中,否则签名中使用的类型可能无法定义),在符号表中查找该签名,找到声明点(在符号表中)作为AST节点,然后应用重写规则,用空声明替换声明


他可能希望对找到的方法进行分析,即是否使用该方法。符号表中也有该信息。

我寻找了快速解决方案,但没有找到任何解决方案,我使用了不同的工具:

  • grep查找包含我想要的主要方法的所有文件 除去
  • 在这些文件中查找/替换以使这些方法私有
  • Eclipse清理只有一条规则:删除未使用的 私有方法
  • 它完成这项工作的副作用很小,就是删除了其他未使用的私有方法。在该项目的上下文中,这并不是什么大问题,因为几乎所有的文件以前都是通过删除未使用的私有方法的保存操作保存的


    感谢大家的输入,它以后可能会适用。

    您希望您的脚本如何不破坏它正在更改的所有代码?您可能会认为调用此方法的代码这样做是有原因的,还是只是一个不再需要的副作用方法?用于覆盖您删除的某个方法的方法是否正确?更多信息:我们将uld希望通过删除包中不适用的主要方法来进行一些清理。编写这些方法只是为了进行一些非正式测试。您希望删除多少种方法?这可能会有所帮助