Kontrolna lista za VSCode Extension

Specifične provjere za VSCode Extension s pas2js.

Ova kontrolna lista dopunjuje 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.<domain>.<action>
  └── 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

Zuletzt geändert: 29.01.2026. u 22:29