我刚刚开始开发 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吗,或者告诉我开发自己的代码是否更好。非常感谢。