====== Kontrolna lista za VSCode Extension ====== Specifične provjere za VSCode Extension s pas2js. Ova kontrolna lista dopunjuje [[.:audit-core|Osnovnu kontrolnu listu]] za VSCode-ekstenzije. ===== Obvezne provjere ===== ==== Activation Events ==== [ ] Activation Events su minimalni i ispravni [ ] Bez "activate on *" osim ako je obrazloženo [ ] Eventi odgovaraju stvarnoj funkcionalnosti **Primjer package.json:** { "activationEvents": [ "onCommand:wvds.build.run", "onLanguage:pascal", "workspaceContains:**/*.lpr" ] } ==== Performanse ==== [ ] Bez dugotrajnih operacija na Extension Host niti [ ] Async-rad je prekidljiv (Cancellation Token) [ ] Progress-Reporting za duge operacije **Primjer: Prekidljiva 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 imaju konzistentne ID-ove [ ] Svi Commands imaju naslov i kategoriju [ ] Grupiranje Commands je logično **Naming Convention:** wvds.. └── wvds.build.run └── wvds.build.clean └── wvds.projects.create ==== Settings ==== [ ] Sve Settings u contributes.configuration [ ] Settings su dokumentirane (description) [ ] Settings imaju sigurne zadane vrijednosti [ ] Settings se validiraju **Primjer:** { "contributes": { "configuration": { "title": "WvdS Toolchain", "properties": { "wvds.toolchain.fpcPath": { "type": "string", "default": "", "description": "Path to fpc.exe. Leave empty for auto-detection." } } } } } ==== Sigurnost ==== [ ] Pozivi vanjskih alata validirani/sanitizirani [ ] Workspace-putanje tretirane kao untrusted [ ] Command Injection nije moguć [ ] shell: false kod Spawn-poziva **Primjer: Siguran poziv alata:** (* ZABRANJENO - Command Injection moguć *) Exec('fpc ' + UserInput); (* ISPRAVNO - Sigurna alternativa *) var Options: TSpawnOptions; begin Options.shell := False; Options.cwd := ValidatedPath; Spawn('fpc', ['-O2', ValidatedInput], Options); end; ==== Cross-Platform ==== [ ] Putanje su cross-platform safe [ ] Encodingi uzeti u obzir (UTF-8) [ ] Line Endings uzeti u obzir [ ] Path-Separatori ispravni (koristi PathJoin) ==== package.json Metadata ==== [ ] publisher postavljen [ ] name ispravan (mala slova, crtice) [ ] version prati SemVer [ ] license naveden [ ] repository linkovan [ ] engines.vscode na minimalnu verziju postavljen ==== Marketplace Assets ==== [ ] README.md prisutan i ažuran [ ] CHANGELOG.md s poviješću verzija [ ] Ikona prisutna (128x128 PNG) [ ] Screenshotovi za kompleksne značajke ===== pas2js-specifične provjere ===== ==== Kompilacija ==== [ ] Kompilira bez grešaka s pas2js [ ] Bez pas2js-nekompatibilnih značajki [ ] Bez class var (koristi Unit-Level Variable) [ ] Bez Int64 (koristi Integer) [ ] Bez // komentara u asm-blokovima ==== Entry Point Pattern ==== [ ] extension_main.pas prisutan [ ] Activate/Deactivate exportirani [ ] Initialization-blok poziva ExportActivateDeactivate **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 (* Inicijalizacija *) end; procedure Deactivate; begin (* Cleanup *) end; initialization ExportActivateDeactivate(@Activate, @Deactivate); end. ==== SSOT za VSCode API-je ==== [ ] VSCode API-ji preko ~/sources/common/web/vscode/ [ ] Bez direktnog require('vscode') u ekstenzijama [ ] WvdS.VSCode.* wrapperi korišteni ===== Preporučene provjere ===== [ ] Progress Reporting za operacije > 1s [ ] Cancellation Tokens implementirani [ ] Debouncing kod File Watching [ ] Veličina ekstenzije minimizirana [ ] Bez nepotrebnih binarnih datoteka/asseta ===== Opcionalne provjere ===== [ ] Smoke Tests (Activation + Command) [ ] Offline-način ako se koriste Remote-servisi [ ] Telemetrija dokumentirana (ili nema) ===== VSIX-izrada ===== ==== Build-proces ==== # 1. Kompiliraj Pascal u JavaScript pas2js @../../common/wvds_common.pas2js.cfg @build.cfg pas/extension_main.pas # 2. Zapakiraj VSIX vsce package --no-dependencies # 3. Validiraj vsce ls ==== Prije VSIX-izrade provjeriti ==== [ ] dist/extension_main.js prisutan [ ] package.json version povećan [ ] CHANGELOG.md ažuriran [ ] README.md ažuran [ ] Bez debug-artefakata [ ] .vscodeignore ispravno konfiguriran ===== Brza kontrolna lista za kopiranje ===== Kontrolna lista pregleda (VSCode Extension): Obvezno: - [ ] Minimalni Activation Events - [ ] Bez blokirajućih operacija - [ ] Commands s ID-ovima, naslovima, kategorijama - [ ] Settings dokumentirane i validirane - [ ] Pozivi alata sanitizirani (shell: false) - [ ] Cross-Platform safe (putanje, encodingi) - [ ] package.json Metadata potpuni pas2js: - [ ] Kompilira bez grešaka - [ ] Bez pas2js-nekompatibilnih značajki - [ ] Entry Point Pattern poštovan - [ ] SSOT za VSCode API-je Assets: - [ ] README.md prisutan - [ ] CHANGELOG.md ažuran - [ ] Ikona prisutna ===== Vidi također ===== * [[.:qualitaetssicherung|Pregled osiguranja kvalitete]] * [[.:audit-core|Osnovna kontrolna lista]] * [[.:extension-entwicklung|Razvoj ekstenzija]] * [[.:code-konventionen|Konvencije koda (pas2js)]] * [[.:build-pipeline|Build-Pipeline]]