gpt4 book ai didi

java - 如何为 Java 源文件中的多个问题编写 Eclipse QuickFix

转载 作者:搜寻专家 更新时间:2023-11-01 02:26:30 26 4
gpt4 key购买 nike

在重构一些遗留代码的过程中,需要创建我们自己的 Eclipse Quick Fix 来对代码进行一些小的更正。按照这篇文章(德语),这(本身)就足够简单了: http://jaxenter.de/artikel/Eclipse-JDT-um-eigene-Quickfixes-erweitern

快速修复 (IQuickFixProcessor) 通过扩展点 org.eclipse.jdt.ui.quickFixProcessors 添加,它创建一个 IJavaCompletionProposal 到做工作。 IQuickFixProcessor 有一个随时可用的 AST,可以对其进行代码更改。

我现在面临的问题是我一次只能对一个问题应用快速修复。如果我选择多个问题(都是相同类型,因此我的自定义快速修复适用),我会收到错误消息“所选问题没有通用的适用快速修复”。

如何创建可用于同一类型的多个问题的快速修复?

使用 Acanda 建议的扩展点 org.eclipse.ui.ide.markerResolution 似乎很难为 Java 源文件实现。其中一个没有可用的 AST,只有一个 IMarker 实例。如何获取 IMarker 的 AST CompilationUnit 和有问题的 ASTNode

更一般的:在 JDT 中是否有一个 API 桥可以与 IMarker 实例一起工作?

最佳答案

为了支持同时修复多个问题,您的快速修复必须实现 org.eclipse.ui.views.markers.WorkbenchMarkerResolution 并且必须使用扩展点 org.eclipse 进行注册.ui.ide.markerResolution。以下示例来自 Eclipse 插件 eclipse-pmd:

<extension
point="org.eclipse.ui.ide.markerResolution">
<markerResolutionGenerator
class="ch.acanda.eclipse.pmd.java.resolution.PMDMarkerResolutionGenerator"
markerType="ch.acanda.eclipse.pmd.core.pmdMarker">
</markerResolutionGenerator>
</extension>

IMarker 创建一个 CompilationUnit 确实有点棘手,找到有问题的 ASTNode 就更棘手了。看看抽象类 ASTQuickFix来自 eclipse-pmd。它从 IMarker 创建一个 CompilationUnit 并将查找 ASTNode 委托(delegate)给它的子类,这些子类可以定义自己的节点查找策略,例如NodeWithinPositionNodeFinder .

关于java - 如何为 Java 源文件中的多个问题编写 Eclipse QuickFix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21624093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com