执行quickfix后如何触发验证?

问题描述 投票:0回答:1

我已经实现了一个针对验证警告的quickfix,它执行某个操作,修复了警告的原因。但是在我编辑文件之前警告不会消失,这会触发新的验证周期。

有没有办法在执行quickfix后触发验证,最好只针对首先导致警告的@ Check-annotated方法。

invalid file warning

在我进行快速修复之后,创建了一个具有该名称的文件,但是,正如我上面所说,警告只有在我编辑文件后才会消失,这会再次触发验证。

这是代码。

验证:

@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)
            }
        }
    });
}
validation xtext quickfix
1个回答
1
投票

也许你可以试试像

@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
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.