2015-11-06 10 views
11

Ich benutze eine Schluck-Aufgabe in vscode (0.9), um zu versuchen, Fehler von beiden Typoskript und tslint zu bekommen.In vscode Fehler von einer Aufgabe mit isWatching generiert werden nicht immer gelöscht, nachdem sie behoben wurden

Die Schluckaufgabe beobachtet Änderungen an meinen ts-Dateien und führt sowohl den gulp-tslint als auch den Schluck-Typoskript für Änderungen aus. Ich habe auch eine Aufgabe in vscode tasks.json und Problem-Matcher definiert, um die Ergebnisse zu analysieren.

Die Fehler werden ordnungsgemäß analysiert und in vscode gemeldet. Sie werden jedoch manchmal beibehalten, auch wenn Code repariert und gespeichert wird.

Gibt es eine zusätzliche Konfiguration, um vsCode Problem Matcher, so dass es Fehler richtig zu löschen, oder ist es ein vscode Bug? Als Workaround gibt es eine Möglichkeit, alle Fehler manuell zu löschen? Der einzige Weg, den ich gefunden habe, um sie zu löschen, ist, vscode neu zu starten, was nicht großartig ist.

Beachten Sie, dass dies funktioniert, wenn es sich bei der Aufgabe nicht um eine Überwachungsaufgabe, sondern um eine einfache Ausführung handelt.

Mein 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 
        } 
       } 
      ] 
     } 
    ] 
} 

Meine schluck Aufgabendefinition:

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')); 
}); 

Antwort

3

Dies ist ein Fehler in VSCode. Irgendwie werden keine Updates auf geöffnete Dateien angewendet. Wenn die Dateien geschlossen sind, werden alle veralteten Fehler entfernt.

So ist die Problemumgehung, auf das kleine Symbol "Alle Dateien schließen" in der Kopfzeile "Arbeitsdateien" zu klicken.

Wenn Sie herausfinden möchten, was das Problem ist, schauen Sie in die JS-Dateien in den VSCode-Ressourcen; In OSX befinden sich diese im Anwendungspaket. Suchen Sie nach workbench.main.js. Sie finden den tsc-watch Problem Matcher dort, und es wird applyTo:c.ApplyToKind.closedDocuments gesetzt haben. Ich habe versucht, das auf allDocuments zu ändern, aber ohne Erfolg.

+1

geschieht immer noch in der aktuellen Version von VSCode. –

+0

Erstellt ein Problem auf dem offiziellen Repo .. https://github.com/Microsoft/vscode/issues/1229 –