使用插件中的Extract Method Action

时间:2017-11-09 09:36:14

标签: java eclipse plugins automated-refactoring extract-method

我刚刚开始开发eclipse插件,请原谅我,如果这是一个简单的问题,但我正在开发一个插件,其中第一步包括分析Java应用程序的源代码和提取新方法。

我的插件确定要提取的语句序列。我想使用 ExtractMethodAction http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fui%2Factions%2Fpackage-summary.html)。

请注意,我的插件会恢复一系列语句(http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FStatement.html),而不是 ITextSelection ,它是类<运行的方法的参数 ExtractMethodAction 即可。此外, ExtractMethodAction 的构造函数具有参数 JavaEditor ,我不知道如何为 ICompilationUnit创建 JavaEditor

这是我的插件执行方法的一部分:

public Object execute(ExecutionEvent event) throws ExecutionException {


    IWorkspace workspace= ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();

    IProject [] projects = root.getProjects();
    for(IProject project: projects){


        IJavaProject javaProject = JavaCore.create(project); 
        try {

            IPackageFragment [] packages =javaProject.getPackageFragments();

            for (IPackageFragment mypackage: packages){


                if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE){


                    ICompilationUnit[] units =  mypackage.getCompilationUnits();
                    for (ICompilationUnit unit: units){

                        Parser myparser = new Parser();
                        CompilationUnit cu=  myparser.parse(unit);
                        ...

                    }   

                }           
           }

这就是我尝试使用ExtractMethodAction的方式:

JavaEditor edit;
ExtractMethodAction act= new ExtractMethodAction(edit);
ITextSelection select;
act.run(select);

请注意,我不知道如何初始化 JavaEditor ITextSelection

如果可能,请帮助我使用 ExtractMethodAction ,或者告诉我是否可以更好地开发自己的代码。非常感谢你。

0 个答案:

没有答案