Inhaltsverzeichnis
VSCode Extension Checkliste
Spezifische Prüfungen für VSCode Extensions mit pas2js.
Diese Checkliste ergänzt die Core-Checkliste für VSCode-Extensions.
Pflicht-Prüfungen
Activation Events
[ ] Activation Events sind minimal und korrekt [ ] Kein "activate on *" außer wenn begründet [ ] Events entsprechen tatsächlicher Funktionalität
Beispiel package.json:
{ "activationEvents": [ "onCommand:wvds.build.run", "onLanguage:pascal", "workspaceContains:**/*.lpr" ] }
Performance
[ ] Keine lang-laufenden Operationen auf Extension Host Thread [ ] Async-Arbeit ist abbrechbar (Cancellation Token) [ ] Progress-Reporting für lange Operationen
Beispiel: Cancellable Operation:
procedure LongOperation(AToken: TCancellationToken); begin while not Finished do begin if AToken.IsCancellationRequested then begin Logger.Info(rsOperationCancelled); Exit; end; ProcessNextItem; end; end;
Commands
[ ] Commands haben konsistente IDs [ ] Alle Commands haben Titel und Kategorie [ ] Command-Gruppierung ist logisch
Naming Convention:
wvds.<domain>.<action> └── wvds.build.run └── wvds.build.clean └── wvds.projects.create
Settings
[ ] Alle Settings in contributes.configuration [ ] Settings sind dokumentiert (description) [ ] Settings haben sichere Defaults [ ] Settings werden validiert
Beispiel:
{ "contributes": { "configuration": { "title": "WvdS Toolchain", "properties": { "wvds.toolchain.fpcPath": { "type": "string", "default": "", "description": "Path to fpc.exe. Leave empty for auto-detection." } } } } }
Sicherheit
[ ] Externe Tool-Aufrufe validiert/sanitisiert [ ] Workspace-Pfade als untrusted behandelt [ ] Keine Command Injection möglich [ ] shell: false bei Spawn-Aufrufen
Beispiel: Sicherer Tool-Aufruf:
(* VERBOTEN - Command Injection möglich *) Exec('fpc ' + UserInput); (* KORREKT - Sichere Alternative *) var Options: TSpawnOptions; begin Options.shell := False; Options.cwd := ValidatedPath; Spawn('fpc', ['-O2', ValidatedInput], Options); end;
Cross-Platform
[ ] Pfade sind cross-platform safe [ ] Encodings berücksichtigt (UTF-8) [ ] Line Endings berücksichtigt [ ] Path-Separatoren korrekt (PathJoin verwenden)
package.json Metadata
[ ] publisher gesetzt [ ] name korrekt (Kleinbuchstaben, Bindestriche) [ ] version folgt SemVer [ ] license angegeben [ ] repository verlinkt [ ] engines.vscode auf minimale Version gesetzt
Marketplace Assets
[ ] README.md vorhanden und aktuell [ ] CHANGELOG.md mit Version-Historie [ ] Icon vorhanden (128x128 PNG) [ ] Screenshots für komplexe Features
pas2js-spezifische Prüfungen
Compilation
[ ] Kompiliert ohne Fehler mit pas2js [ ] Keine pas2js-inkompatiblen Features verwendet [ ] Keine class var (Unit-Level Variable statt) [ ] Keine Int64 (Integer statt) [ ] Keine // Kommentare in asm-Blöcken
Entry Point Pattern
[ ] extension_main.pas vorhanden [ ] Activate/Deactivate exportiert [ ] Initialization-Block ruft ExportActivateDeactivate auf
Template:
unit extension_main; {$mode objfpc}{$H+} interface uses JS, VSCode.API, WvdS.VSCode.ExtensionExports; procedure Activate(AContext: TExtensionContext); procedure Deactivate; implementation procedure Activate(AContext: TExtensionContext); begin (* Initialisierung *) end; procedure Deactivate; begin (* Cleanup *) end; initialization ExportActivateDeactivate(@Activate, @Deactivate); end.
SSOT für VSCode APIs
[ ] VSCode APIs via ~/sources/common/web/vscode/
[ ] Kein direkter require('vscode') in Extensions
[ ] WvdS.VSCode.* Wrapper verwendet
Empfohlene Prüfungen
[ ] Progress Reporting für Operationen > 1s [ ] Cancellation Tokens implementiert [ ] Debouncing bei File Watching [ ] Extension-Größe minimiert [ ] Keine unnötigen Binaries/Assets
Optionale Prüfungen
[ ] Smoke Tests (Activation + Command) [ ] Offline-Modus wenn Remote-Services genutzt [ ] Telemetrie dokumentiert (oder keine)
VSIX-Erstellung
Build-Prozess
# 1. Pascal zu JavaScript kompilieren pas2js @../../common/wvds_common.pas2js.cfg @build.cfg pas/extension_main.pas # 2. VSIX packen vsce package --no-dependencies # 3. Validieren vsce ls
Vor VSIX-Erstellung prüfen
[ ] dist/extension_main.js vorhanden [ ] package.json version erhöht [ ] CHANGELOG.md aktualisiert [ ] README.md aktuell [ ] Keine Debug-Artefakte enthalten [ ] .vscodeignore korrekt konfiguriert
Schnell-Checkliste zum Kopieren
Review-Checkliste (VSCode Extension): Pflicht: - [ ] Minimale Activation Events - [ ] Keine blockierenden Operationen - [ ] Commands mit IDs, Titeln, Kategorien - [ ] Settings dokumentiert und validiert - [ ] Tool-Aufrufe sanitisiert (shell: false) - [ ] Cross-Platform safe (Pfade, Encodings) - [ ] package.json Metadata vollständig pas2js: - [ ] Kompiliert ohne Fehler - [ ] Keine pas2js-inkompatiblen Features - [ ] Entry Point Pattern eingehalten - [ ] SSOT für VSCode APIs Assets: - [ ] README.md vorhanden - [ ] CHANGELOG.md aktuell - [ ] Icon vorhanden
Siehe auch
Zuletzt geändert: den 29.01.2026 um 15:13