Specifična preverjanja za VSCode razširitve s pas2js.
[ ] Activation Events so minimalni in pravilni [ ] Brez "activate on *" razen če je utemeljeno [ ] Dogodki ustrezajo dejanski funkcionalnosti
Primer package.json:
{ "activationEvents": [ "onCommand:wvds.build.run", "onLanguage:pascal", "workspaceContains:**/*.lpr" ] }
[ ] Brez dolgotrajnih operacij na niti Extension Host [ ] Asinhrono delo je prekinjljivo (Cancellation Token) [ ] Poročanje o napredku za dolge operacije
Primer: Prekinjljiva operacija:
procedure LongOperation(AToken: TCancellationToken); begin while not Finished do begin if AToken.IsCancellationRequested then begin Logger.Info(rsOperationCancelled); Exit; end; ProcessNextItem; end; end;
[ ] Commands imajo konsistentne ID-je [ ] Vsi Commands imajo naslov in kategorijo [ ] Grupiranje Commands je logično
Konvencija poimenovanja:
wvds.<domena>.<akcija> +-- wvds.build.run +-- wvds.build.clean +-- wvds.projects.create
[ ] Vse Settings v contributes.configuration [ ] Settings so dokumentirane (description) [ ] Settings imajo varne privzete vrednosti [ ] Settings so validirane
Primer:
{ "contributes": { "configuration": { "title": "WvdS Toolchain", "properties": { "wvds.toolchain.fpcPath": { "type": "string", "default": "", "description": "Path to fpc.exe. Leave empty for auto-detection." } } } } }
[ ] Klici zunanjih orodij validirani/sanirani [ ] Poti workspace obravnavane kot nezaupanja vredne [ ] Command Injection ni mogoč [ ] shell: false pri klicih Spawn
Primer: Varen klic orodja:
(* PREPOVEDANO - Mogoč Command Injection *) Exec('fpc ' + UserInput); (* PRAVILNO - Varna alternativa *) var Options: TSpawnOptions; begin Options.shell := False; Options.cwd := ValidatedPath; Spawn('fpc', ['-O2', ValidatedInput], Options); end;
[ ] Poti so cross-platform varne [ ] Kodiranja upoštevana (UTF-8) [ ] Končnice vrstic upoštevane [ ] Ločila poti pravilna (uporaba PathJoin)
[ ] publisher nastavljeno [ ] name pravilno (male črke, vezaji) [ ] version sledi SemVer [ ] license navedena [ ] repository povezan [ ] engines.vscode na minimalno verzijo
[ ] README.md prisoten in ažuren [ ] CHANGELOG.md z zgodovino verzij [ ] Ikona prisotna (128x128 PNG) [ ] Posnetki zaslona za kompleksne funkcije
[ ] Kompilira brez napak s pas2js [ ] Brez pas2js-nezdružljivih funkcij [ ] Brez class var (namesto tega Unit-Level Variable) [ ] Brez Int64 (namesto tega Integer) [ ] Brez // komentarjev v asm-blokih
[ ] extension_main.pas prisoten [ ] Activate/Deactivate izvožena [ ] Initialization-blok kliče ExportActivateDeactivate
Predloga:
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 (* Inicializacija *) end; procedure Deactivate; begin (* Čiščenje *) end; initialization ExportActivateDeactivate(@Activate, @Deactivate); end.
[ ] VSCode API-ji prek ~/sources/common/web/vscode/
[ ] Brez neposrednega require('vscode') v razširitvah
[ ] Uporabljene ovojnice WvdS.VSCode.*
[ ] Progress Reporting za operacije > 1s [ ] Cancellation Tokens implementirani [ ] Debouncing pri File Watching [ ] Velikost razširitve minimizirana [ ] Brez nepotrebnih binarnih datotek/sredstev
[ ] Smoke Tests (Activation + Command) [ ] Offline način, če se uporabljajo oddaljene storitve [ ] Telemetrija dokumentirana (ali brez nje)
# 1. Pascal v JavaScript kompilirati pas2js @../../common/wvds_common.pas2js.cfg @build.cfg pas/extension_main.pas # 2. VSIX zapakirati vsce package --no-dependencies # 3. Validirati vsce ls
[ ] dist/extension_main.js prisoten [ ] package.json version povišana [ ] CHANGELOG.md posodobljen [ ] README.md ažuren [ ] Brez razhroščevalnih artefaktov [ ] .vscodeignore pravilno konfiguriran
Kontrolni seznam pregleda (VSCode Extension): Obvezno: - [ ] Minimalni Activation Events - [ ] Brez blokirajočih operacij - [ ] Commands z ID-ji, naslovi, kategorijami - [ ] Settings dokumentirane in validirane - [ ] Klici orodij sanirani (shell: false) - [ ] Cross-Platform varno (poti, kodiranja) - [ ] package.json Metadata popolna pas2js: - [ ] Kompilira brez napak - [ ] Brez pas2js-nezdružljivih funkcij - [ ] Entry Point Pattern upoštevan - [ ] SSOT za VSCode API-je Assets: - [ ] README.md prisoten - [ ] CHANGELOG.md ažuren - [ ] Ikona prisotna