在我的源代码分析Eclipse RCP项目中,我想getAST分析一些c / c ++文件的AST,它既不是eclipse工作区内项目的源文件,也不是项目中项目的链接资源。 eclipse工作区。基本上,我的RCP应用程序中没有任何工作空间。任何建议将不胜感激!
欢呼声,
答案 0 :(得分:0)
您需要以编程方式从源文件夹创建新项目(确保您的内部有一些基本的.cproject文件,并且源代码正确):
IWorkspace workspace = ResourcesPlugin.getWorkspace();
project = workspace.getRoot().getProject("project");
if (!project.exists()) {
IProjectDescription description = workspace.newProjectDescription("project");
CCorePlugin.getDefault().createCDTProject(description, project, null);
} else {
project.refreshLocal(IResource.DEPTH_INFINITE, null);
}
您可以使用AST:
ITranslationUnit translationUnit = (ITranslationUnit) CoreModel.getDefault().create(file);
IASTTranslationUnit ast = translationUnit.getAST();
答案 1 :(得分:0)
如果您碰巧在编辑器中拥有该文件,我发现了一种更简单的方法,那么您可以在编辑器部分使用getEditorInput方法来获取ITranslationUnit,即:
// here is how you can get the active editor
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
IEditorPart editorPart = window.getActivePage().getActiveEditor();
// for an external file the editor input will be of type ITranslationUnitEditorInput
IEditorInput input = editorPart.getEditorInput();
if (input instanceof ITranslationUnitEditorInput) {
ITranslationUnit externalTU = ((ITranslationUnitEditorInput) input).getTranslationUnit();
}