1

设置:我正在做一个编程实验,我需要向我的测试人员显示与实际存在的代码行不同的方法签名(一行代码)。例子:

// this code should be visible
public def aFunction(def a, def b) {

// this line of code should be used
public void aFunction(String a, List<String> b) {

其目的是,当源代码包含第二行(如代码完成、错误等)时,一切都像源代码一样工作,但只有第一行可见。我已经尝试修补我使用的 groovy 编辑器并在加载和保存时替换一些文本,但这似乎并没有完成这项工作,使用一些代码

IDocument doc =this.getDocumentProvider().getDocument(this.getEditorInput()); doc.set(doc.get().replaceAll(...));

可悲的是,这会导致奇怪的行为,例如总是标记为脏文件。我也尝试过使用 groovy 编辑器提供的 getCompilationUnit 方法,但不知何故,这在任何方面都没有帮助(可能是因为“错误”的代码在编辑器中仍然可见?)。

最后,我尝试在 doSetInput 方法中为 IEditorInput 下的 IFile 包装 InputStream,例如

IFile resource = (IFile) input.getAdapter(IFile.class);
InputStream in = resource.getContents();
//...wrap stream
resource.setContents(in, false, true, null);

但这只会导致编辑器完全为空。

有人知道如何解决这个问题吗?

4

0 回答 0