====== 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]]