The attribute plugin is not available, 2fa disabled

VSCode Extension Checklist

Specific checks for VSCode Extensions with pas2js.

This checklist supplements the Core Checklist for VSCode extensions.

Required Checks

Activation Events

[ ] Activation Events are minimal and correct
[ ] No "activate on *" unless justified
[ ] Events match actual functionality

Example package.json:

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

Performance

[ ] No long-running operations on Extension Host Thread
[ ] Async work is cancellable (Cancellation Token)
[ ] Progress reporting for long operations

Example: Cancellable Operation:

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 have consistent IDs
[ ] All Commands have title and category
[ ] Command grouping is logical

Naming Convention:

wvds.<domain>.<action>
  └── wvds.build.run
  └── wvds.build.clean
  └── wvds.projects.create

Settings

[ ] All Settings in contributes.configuration
[ ] Settings are documented (description)
[ ] Settings have secure defaults
[ ] Settings are validated

Example:

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

Security

[ ] External tool calls validated/sanitized
[ ] Workspace paths treated as untrusted
[ ] No Command Injection possible
[ ] shell: false for Spawn calls

Example: Secure Tool Call:

(* FORBIDDEN - Command Injection possible *)
Exec('fpc ' + UserInput);
 
(* CORRECT - Secure alternative *)
var
  Options: TSpawnOptions;
begin
  Options.shell := False;
  Options.cwd := ValidatedPath;
  Spawn('fpc', ['-O2', ValidatedInput], Options);
end;

Cross-Platform

[ ] Paths are cross-platform safe
[ ] Encodings considered (UTF-8)
[ ] Line Endings considered
[ ] Path separators correct (use PathJoin)

package.json Metadata

[ ] publisher set
[ ] name correct (lowercase, hyphens)
[ ] version follows SemVer
[ ] license specified
[ ] repository linked
[ ] engines.vscode set to minimum version

Marketplace Assets

[ ] README.md present and current
[ ] CHANGELOG.md with version history
[ ] Icon present (128x128 PNG)
[ ] Screenshots for complex features

pas2js-Specific Checks

Compilation

[ ] Compiles without errors with pas2js
[ ] No pas2js-incompatible features used
[ ] No class var (use Unit-Level Variable instead)
[ ] No Int64 (use Integer instead)
[ ] No // comments in asm blocks

Entry Point Pattern

[ ] extension_main.pas present
[ ] Activate/Deactivate exported
[ ] Initialization block calls 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
  (* Initialization *)
end;
 
procedure Deactivate;
begin
  (* Cleanup *)
end;
 
initialization
  ExportActivateDeactivate(@Activate, @Deactivate);
 
end.

SSOT for VSCode APIs

[ ] VSCode APIs via ~/sources/common/web/vscode/
[ ] No direct require('vscode') in Extensions
[ ] WvdS.VSCode.* Wrapper used
[ ] Progress Reporting for operations > 1s
[ ] Cancellation Tokens implemented
[ ] Debouncing for File Watching
[ ] Extension size minimized
[ ] No unnecessary binaries/assets

Optional Checks

[ ] Smoke Tests (Activation + Command)
[ ] Offline mode when Remote Services used
[ ] Telemetry documented (or none)

VSIX Creation

Build Process

# 1. Compile Pascal to JavaScript
pas2js @../../common/wvds_common.pas2js.cfg @build.cfg pas/extension_main.pas
 
# 2. Package VSIX
vsce package --no-dependencies
 
# 3. Validate
vsce ls

Pre-VSIX Creation Checks

[ ] dist/extension_main.js present
[ ] package.json version incremented
[ ] CHANGELOG.md updated
[ ] README.md current
[ ] No debug artifacts included
[ ] .vscodeignore correctly configured

Quick Checklist for Copying

Review Checklist (VSCode Extension):

Required:
- [ ] Minimal Activation Events
- [ ] No blocking operations
- [ ] Commands with IDs, titles, categories
- [ ] Settings documented and validated
- [ ] Tool calls sanitized (shell: false)
- [ ] Cross-Platform safe (paths, encodings)
- [ ] package.json Metadata complete

pas2js:
- [ ] Compiles without errors
- [ ] No pas2js-incompatible features
- [ ] Entry Point Pattern followed
- [ ] SSOT for VSCode APIs

Assets:
- [ ] README.md present
- [ ] CHANGELOG.md current
- [ ] Icon present

See Also

Zuletzt geändert: on 2026/01/29 at 10:25 PM