PowerShell / PowerShell/PowerShellEditorServices

Add support for renaming PowerShell class references

Abierto
#2,293 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Issue-Bug Needs: Triage
Lenguaje dominante
C#
Estrellas
767
Forks
266
Merge medio
3 d 16 h
PR fusionados (30 d)
1

Descripción

Prerequisites
  • I have written a descriptive issue title.
  • I have searched all open and closed issues to ensure it has not already been reported.
  • I have read the troubleshooting guide.
  • I am sure this issue is with PowerShell Editor Services itself and does not reproduce in a standalone PowerShell instance, and is not an issue with my editor.
  • I have verified that I am using the latest version of PowerShell Editor Services.
  • If this is a security issue, I have read the security issue reporting guidance.
Summary

This is not a bug, but the README says that rename scenarios should be filed as bug reports, so that's what I'm doing.
I think it should be fairly trivial to add renaming support for PowerShell classes defined in the same script file.
Expected:

class DemoClass
{
    [string] $SomeProperty

    DemoClass ([string] $SomeArg)
    {
        $this.SomeProperty = $SomeArg
    }
}

[DemoClass]

Actual:

class NewName
{
    [string] $SomeProperty

    NewName ([string] $SomeArg)
    {
        $this.SomeProperty = $SomeArg
    }
}

[NewName]

One thing to keep in mind during implementation is that a PowerShell class can also be used to define an attribute, and an attribute type can drop the optional Attribute suffix in an attribute context as seen here:

class ValidateSomethingAttribute : System.Management.Automation.ValidateArgumentsAttribute
{
    [void]Validate([System.Object]$arguments, [System.Management.Automation.EngineIntrinsics]$engineIntrinsics)
    {
    }
}
[ValidateSomething()][string]$Path = "c:\windows"
PowerShell Version
Name                           Value
----                           -----
PSVersion                      7.6.1
PSEdition                      Core
GitCommitId                    7.6.1
OS                             Microsoft Windows 10.0.26200
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.4
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
Editor Version
VS code:

Version: 1.117.0 (system setup)
Commit: 10c8e557c8b9f9ed0a87f61f1c9a44bde731c409
Date: 2026-04-21T16:12:14-07:00
Electron: 39.8.7
ElectronBuildId: 13841579
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Windows_NT x64 10.0.26200
PowerShell Editor Services Version
Major  Minor  Build  Revision
-----  -----  -----  --------
4      6      0      0
Steps to Reproduce

Use the code blocks from before and press F2 on the class name references.

Visuals

No response

Logs

No response

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo los dos ejemplos de clases y pulsando F2 sobre las referencias a los nombres de clase. Sigue el manejo existente del renombrado en PowerShell Editor Services, incluidas las referencias a clases en el mismo archivo y el comportamiento del sufijo opcional Attribute. Se considera terminado cuando el renombrado actualiza de forma coherente la declaración, el constructor, las referencias de tipo y el uso del atributo.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp, powershell
Área
devtools, tooling
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.