The attribute plugin is not available, 2fa disabled

Checklist Extension VSCode

Verifiche specifiche per Extension VSCode con pas2js.

Questa checklist integra la Checklist Core per Extension VSCode.

Verifiche Obbligatorie

Activation Events

[ ] Gli Activation Events sono minimali e corretti
[ ] Nessun "activate on *" tranne se giustificato
[ ] Gli Events corrispondono alla funzionalità effettiva

Esempio package.json:

{
  "activationEvents": [
    "onCommand:wvds.build.run",
    "onLanguage:pascal",
    "workspaceContains:**/*.lpr"
  ]
}

Performance

[ ] Nessuna operazione lunga sul thread Extension Host
[ ] Il lavoro async è cancellabile (Cancellation Token)
[ ] Progress-Reporting per operazioni lunghe

Esempio: Operazione Cancellabile:

procedure LongOperation(AToken: TCancellationToken);
begin
  while not Finished do
  begin
    if AToken.IsCancellationRequested then
    begin
      Logger.Info(rsOperationCancelled);
      Exit;
    end;
    ProcessNextItem;
  end;
end;

Commands

[ ] I Commands hanno ID coerenti
[ ] Tutti i Commands hanno titolo e categoria
[ ] Il raggruppamento dei Command è logico

Convenzione Naming:

wvds.<dominio>.<azione>
  +-- wvds.build.run
  +-- wvds.build.clean
  +-- wvds.projects.create

Settings

[ ] Tutte le Settings in contributes.configuration
[ ] Le Settings sono documentate (description)
[ ] Le Settings hanno default sicuri
[ ] Le Settings vengono validate

Esempio:

{
  "contributes": {
    "configuration": {
      "title": "WvdS Toolchain",
      "properties": {
        "wvds.toolchain.fpcPath": {
          "type": "string",
          "default": "",
          "description": "Path to fpc.exe. Leave empty for auto-detection."
        }
      }
    }
  }
}

Sicurezza

[ ] Chiamate tool esterni validate/sanificate
[ ] Percorsi workspace trattati come untrusted
[ ] Nessuna Command Injection possibile
[ ] shell: false nelle chiamate Spawn

Esempio: Chiamata Tool Sicura:

(* VIETATO - Command Injection possibile *)
Exec('fpc ' + UserInput);
 
(* CORRETTO - Alternativa sicura *)
var
  Options: TSpawnOptions;
begin
  Options.shell := False;
  Options.cwd := ValidatedPath;
  Spawn('fpc', ['-O2', ValidatedInput], Options);
end;

Cross-Platform

[ ] I percorsi sono cross-platform safe
[ ] Encoding considerato (UTF-8)
[ ] Line Endings considerati
[ ] Separatori percorso corretti (usare PathJoin)

Metadata package.json

[ ] publisher impostato
[ ] name corretto (minuscole, trattini)
[ ] version segue SemVer
[ ] license indicata
[ ] repository linkato
[ ] engines.vscode impostato sulla versione minima

Asset Marketplace

[ ] README.md presente e aggiornato
[ ] CHANGELOG.md con cronologia versioni
[ ] Icona presente (128x128 PNG)
[ ] Screenshot per funzionalità complesse

Verifiche Specifiche pas2js

Compilazione

[ ] Compila senza errori con pas2js
[ ] Nessuna funzionalità pas2js-incompatibile usata
[ ] Nessun class var (usare variabile a livello Unit)
[ ] Nessun Int64 (usare Integer)
[ ] Nessun commento // in blocchi asm

Pattern Entry Point

[ ] extension_main.pas presente
[ ] Activate/Deactivate esportati
[ ] Blocco Initialization chiama 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
  (* Inizializzazione *)
end;
 
procedure Deactivate;
begin
  (* Cleanup *)
end;
 
initialization
  ExportActivateDeactivate(@Activate, @Deactivate);
 
end.

SSOT per API VSCode

[ ] API VSCode via ~/sources/common/web/vscode/
[ ] Nessun require('vscode') diretto nelle Extension
[ ] Wrapper WvdS.VSCode.* usati

Verifiche Raccomandate

[ ] Progress Reporting per operazioni > 1s
[ ] Cancellation Tokens implementati
[ ] Debouncing nel File Watching
[ ] Dimensione Extension minimizzata
[ ] Nessun binary/asset non necessario

Verifiche Opzionali

[ ] Smoke Tests (Activation + Command)
[ ] Modalità offline se servizi remoti usati
[ ] Telemetria documentata (o nessuna)

Creazione VSIX

Processo Build

# 1. Compilare Pascal in JavaScript
pas2js @../../common/wvds_common.pas2js.cfg @build.cfg pas/extension_main.pas
 
# 2. Pacchettizzare VSIX
vsce package --no-dependencies
 
# 3. Validare
vsce ls

Verifiche Prima di Creazione VSIX

[ ] dist/extension_main.js presente
[ ] package.json versione incrementata
[ ] CHANGELOG.md aggiornato
[ ] README.md aggiornato
[ ] Nessun artefatto debug incluso
[ ] .vscodeignore configurato correttamente

Checklist Rapida da Copiare

Checklist Review (Extension VSCode):

Obbligatorio:
- [ ] Activation Events minimali
- [ ] Nessuna operazione bloccante
- [ ] Commands con ID, titoli, categorie
- [ ] Settings documentate e validate
- [ ] Chiamate tool sanificate (shell: false)
- [ ] Cross-Platform safe (percorsi, encoding)
- [ ] Metadata package.json completi

pas2js:
- [ ] Compila senza errori
- [ ] Nessuna funzionalità pas2js-incompatibile
- [ ] Pattern Entry Point rispettato
- [ ] SSOT per API VSCode

Asset:
- [ ] README.md presente
- [ ] CHANGELOG.md aggiornato
- [ ] Icona presente

Vedi anche

Zuletzt geändert: il 30/01/2026 alle 01:40