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