Kontrolni seznam VSCode Extension

Specifična preverjanja za VSCode razširitve s pas2js.

Ta kontrolni seznam dopolnjuje 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.<domena>.<akcija>
  +-- 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

Zuletzt geändert: dne 29.01.2026 ob 22:24