====== Kontrolni seznam VSCode Extension ====== Specifična preverjanja za VSCode razširitve s pas2js. Ta kontrolni seznam dopolnjuje [[.:audit-core|Kontrolni seznam Core]] za VSCode razširitve. ===== Obvezna preverjanja ===== ==== Activation Events ==== [ ] 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" ] } ==== Zmogljivost ==== [ ] 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 ==== [ ] Commands imajo konsistentne ID-je [ ] Vsi Commands imajo naslov in kategorijo [ ] Grupiranje Commands je logično **Konvencija poimenovanja:** wvds.. +-- wvds.build.run +-- wvds.build.clean +-- wvds.projects.create ==== Settings ==== [ ] 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." } } } } } ==== Varnost ==== [ ] 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; ==== Cross-Platform ==== [ ] Poti so cross-platform varne [ ] Kodiranja upoštevana (UTF-8) [ ] Končnice vrstic upoštevane [ ] Ločila poti pravilna (uporaba PathJoin) ==== package.json Metadata ==== [ ] publisher nastavljeno [ ] name pravilno (male črke, vezaji) [ ] version sledi SemVer [ ] license navedena [ ] repository povezan [ ] engines.vscode na minimalno verzijo ==== Marketplace Assets ==== [ ] README.md prisoten in ažuren [ ] CHANGELOG.md z zgodovino verzij [ ] Ikona prisotna (128x128 PNG) [ ] Posnetki zaslona za kompleksne funkcije ===== pas2js-specifična preverjanja ===== ==== Kompilacija ==== [ ] 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 ==== Entry Point Pattern ==== [ ] 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. ==== SSOT za VSCode API-je ==== [ ] VSCode API-ji prek ~/sources/common/web/vscode/ [ ] Brez neposrednega require('vscode') v razširitvah [ ] Uporabljene ovojnice WvdS.VSCode.* ===== Priporočena preverjanja ===== [ ] Progress Reporting za operacije > 1s [ ] Cancellation Tokens implementirani [ ] Debouncing pri File Watching [ ] Velikost razširitve minimizirana [ ] Brez nepotrebnih binarnih datotek/sredstev ===== Izbirna preverjanja ===== [ ] Smoke Tests (Activation + Command) [ ] Offline način, če se uporabljajo oddaljene storitve [ ] Telemetrija dokumentirana (ali brez nje) ===== Ustvarjanje VSIX ===== ==== Postopek gradnje ==== # 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 ==== Pred ustvarjanjem VSIX preveriti ==== [ ] dist/extension_main.js prisoten [ ] package.json version povišana [ ] CHANGELOG.md posodobljen [ ] README.md ažuren [ ] Brez razhroščevalnih artefaktov [ ] .vscodeignore pravilno konfiguriran ===== Hitri kontrolni seznam za kopiranje ===== 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 ===== Glejte tudi ===== * [[.:qualitaetssicherung|Pregled zagotavljanja kakovosti]] * [[.:audit-core|Kontrolni seznam Core]] * [[.:extension-entwicklung|Razvoj razširitev]] * [[.:code-konventionen|Konvencije kode (pas2js)]] * [[.:build-pipeline|Build-Pipeline]]