执行快速修复后如何触发验证?
How to trigger validation after executing a quickfix?
我已经为执行特定操作的验证警告实施了快速修复,修复了警告的原因。但警告不会消失,直到我编辑文件,这会触发新的验证周期。
有没有办法在执行 quickfix 后触发验证,最好只针对首先引起警告的 @Check-annotated 方法。
在我进行快速修复后,会创建一个具有该名称的文件,但正如我上面所说,警告只会在我编辑文件后消失,这会再次触发验证。
这是代码。
验证:
@Check
def checkFileExists(FileType file)
{
if (!fileExists(file))
{
warning('This file does not exist.', TestsPackage.Literals.FILE_TYPE__FILE_NAME, INVALID_FILE)
}
}
快速修复:
@Fix(TestsValidator.INVALID_FILE)
def createFile(Issue issue, IssueResolutionAcceptor acceptor)
{
acceptor.accept(issue, "Create file", "", null,
new ISemanticModification()
{
override apply(EObject element, IModificationContext context)
throws Exception {
{
val file = element as FileType
createFile(file)
}
}
});
}
也许你可以试试
@Fix(MyDslValidator.INVALID_NAME)
def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
context |
val xtextDocument = context.xtextDocument
val firstLetter = xtextDocument.get(issue.offset, 1)
xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
(xtextDocument as XtextDocument).validationJob.schedule
]
}
我已经为执行特定操作的验证警告实施了快速修复,修复了警告的原因。但警告不会消失,直到我编辑文件,这会触发新的验证周期。
有没有办法在执行 quickfix 后触发验证,最好只针对首先引起警告的 @Check-annotated 方法。
在我进行快速修复后,会创建一个具有该名称的文件,但正如我上面所说,警告只会在我编辑文件后消失,这会再次触发验证。
这是代码。
验证:
@Check
def checkFileExists(FileType file)
{
if (!fileExists(file))
{
warning('This file does not exist.', TestsPackage.Literals.FILE_TYPE__FILE_NAME, INVALID_FILE)
}
}
快速修复:
@Fix(TestsValidator.INVALID_FILE)
def createFile(Issue issue, IssueResolutionAcceptor acceptor)
{
acceptor.accept(issue, "Create file", "", null,
new ISemanticModification()
{
override apply(EObject element, IModificationContext context)
throws Exception {
{
val file = element as FileType
createFile(file)
}
}
});
}
也许你可以试试
@Fix(MyDslValidator.INVALID_NAME)
def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
context |
val xtextDocument = context.xtextDocument
val firstLetter = xtextDocument.get(issue.offset, 1)
xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
(xtextDocument as XtextDocument).validationJob.schedule
]
}