0

在链接错误时,我可以提出适当的诊断(比如 MyDSL.MY_APPROPRIATE_DIAGNOSTIC),然后在 MyDSLQuickfixProvider 中通过以这种方式对其进行注释来快速修复它:

@Fix(MyDSL.MY_APPROPRIATE_DIAGNOSTIC)
public void fixMyAppropriateDiagnostic(final Issue issue, final IssueResolutionAcceptor acceptor) {
  ...
}

如果我想自动解决诊断问题,即自动执行 IModification 而不向用户建议它作为快速修复(想象一下诊断的快速修复是唯一的),那该怎么办?

有没有办法以与(用户建议的)快速修复类似的方式将(立即)处理代码与诊断相关联?

在此先感谢,马可

4

1 回答 1

0

无法将快速修复设置为自动执行。您的替代方案是:

  • 从代码中的其他位置调用标记解析代码。即,虽然标记分辨率通常是根据用户请求使用问题视图、标尺按钮和类似 UI 显式触发的,但您可以从任何地方调用它们。确保您不会干扰不是来自您的插件的快速修复,并确保您的用户不会对这个非 Eclipse 工作流程感到惊讶。

  • 对于某些问题,您可以改为创建代码完成规则或模板。这些仍然不是完全自动的,但基本上您已经可以通过这种方式“纠正”部分用户输入,并避免标记完整输入的违规行为。

于 2013-04-08T16:11:02.293 回答