在 vscode 中,使用 isWatching 的任务生成的错误在修复后并不总是被清除

Posted

技术标签:

【中文标题】在 vscode 中,使用 isWatching 的任务生成的错误在修复后并不总是被清除【英文标题】:In vscode errors generated by a task with isWatching are not always cleared after they have been fixed 【发布时间】:2016-02-07 09:05:58 【问题描述】:

我在 vscode (0.9) 中使用 gulp 任务来尝试从 typescript 和 tslint 中获取错误。

gulp 任务正在监视我的 ts 文件的更改,并在更改时运行 gulp-tslint 和 gulp-typescript。 我还在 vscode tasks.json 和问题匹配器中定义了一个任务来解析结果。

错误被解析并正确报告到 vscode 中。 但是,即使代码已修复并保存,它们有时也会保留。

是否有一些额外的配置可以提供给 vscode 问题匹配器,以便它正确清除错误或者它是 vscode 错误? 作为一种解决方法,有没有办法手动清除所有错误?我发现清除它们的唯一方法是重新启动 vscode,这不是很好。

请注意,如果任务不是监视任务而是简单执行,则此方法可以正常工作。

我的 vscode tasks.json


    "version": "0.1.0",
    "command": "gulp",
    "isShellCommand": true,
    "tasks": [
        
            "taskName": "watch",
            // Make this the default build command.
            "isBuildCommand": true,
            // Watching
            "isWatching": true,
            // Show the output window only if unrecognized errors occur.
            "showOutput": "always",
            // Use the standard less compilation problem matcher.
            "problemMatcher": [
                
                    "owner": "gulp-tslint",
                    "fileLocation": [
                        "relative",
                        "$workspaceRoot/app"
                    ],
                    "pattern": 
                        "regexp": ".*\\[gulp-tslint\\] (error|warning) (.*)\\[(\\d*), (\\d*)\\]: (.*)",
                        "severity": 1,
                        "file": 2,
                        "line": 3,
                        "column": 4,
                        "message": 5
                    
                ,
                
                    "owner": "gulp-typescript",
                    "fileLocation": "absolute",
                    "pattern": 
                        "regexp": "\\[gulp-typescript\\] (.*)\\((\\d*),(\\d*)\\): (error|warning) (.*)",
                        "file": 1,
                        "line": 2,
                        "column": 3,
                        "severity": 4,
                        "message": 5
                    
                
            ]
        
    ]

我的 gulp 任务定义:

const tslint = require('gulp-tslint');
const typescript = require('gulp-typescript');
gulp.task('watch', function () 
    gulp.watch(srcTsFiles, ['tslint', 'compile']);
);


gulp.task('tslint', function () 
    return gulp.src(srcTsFiles)
        .pipe(tslint())
        .pipe(tslint.report('prose', 
            emitError: false,
            summarizeFailureOutput: true
        ));
);


var tsProject = typescript.createProject('tsconfig.json');
gulp.task('compile', function () 
  tsProject.src()
    .pipe(typescript(tsProject, undefined,             typescript.reporter.longReporter()))
    .pipe(gulp.dest('dist'));
);

【问题讨论】:

【参考方案1】:

这是 VSCode 中的一个错误。不知何故,它不会对打开的文件应用任何更新。如果文件被关闭,所有过时的错误都会被删除。

因此,解决方法是单击“工作文件”标题中的“关闭所有文件”小图标。

如果你想自己找出问题所在,请查看 VSCode 资源中的 JS 文件;在 OSX 中,它们驻留在应用程序包中。寻找workbench.main.js。你会在其中找到tsc-watch 问题匹配器,它会设置applyTo:c.ApplyToKind.closedDocuments。我尝试将其更改为allDocuments,但无济于事。

【讨论】:

在当前版本的 VSCode 中仍然会发生。 在官方仓库上创建了一个问题。github.com/Microsoft/vscode/issues/1229【参考方案2】:

这已在最新的内部版本中修复(我对其进行了测试),并且可能会在下周投入生产。

https://github.com/Microsoft/vscode/issues/909

【讨论】:

以上是关于在 vscode 中,使用 isWatching 的任务生成的错误在修复后并不总是被清除的主要内容,如果未能解决你的问题,请参考以下文章

在终端中使用vscode打开文件或者文件夹

vscode的dash插件使用方法

教你如何在idea中使用vscode的主题皮肤+快捷键

vscode中配置@路径提示

在 vscode 中 debugger 调试

VScode使用笔记