В ошибках vscode, сгенерированных заданием с isWatching, не всегда очищаются после того, как они исправлены

Я использую задачу gulp в vscode (0.9), чтобы попытаться получить ошибки от 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
                    }
                }
            ]
        }
    ]
}

My 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. Так или иначе, он не применяет никаких обновлений для открытия файлов. Если файлы закрыты, любые устаревшие ошибки удаляются.

Итак, обходным путем является щелчок маленького значка "закрыть все файлы" в заголовке "Рабочие файлы".

Если вы хотите выяснить, в чем проблема, посмотрите файлы JS в ресурсах VSCode; в OSX они находятся в пакете приложений. Найдите workbench.main.js. Вы найдете там tsc-watch проблема, и у него будет applyTo:c.ApplyToKind.closedDocuments. Я попытался изменить это на allDocuments, но безрезультатно.

Ответ 2

Это исправлено в последней инсайдерской сборке (я ее протестировал) и, скорее всего, выйдет на производство на следующей неделе.

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