#PSScriptAnalyzer: Análisis de código estático para los scripts y módulos de #Windows #PowerShell

PSScriptAnalyzer-00Windows Management Framework 5.0 Preview February 2015 incluye la adición de un nuevo módulo de Windows PowerShell llamado PSScriptAnalyzer.

Se trata de un corrector de código estático para los módulos de Windows PowerShell y scripts y se instala en $env:ProgramFiles/WindowsPowerShell/Modules.

PSScriptAnalyzer comprueba la calidad del código de Windows PowerShell mediante la ejecución de un conjunto de reglas basadas en las mejores prácticas de PowerShell identificadas por el equipo de PowerShell y la comunidad. PSScriptAnalyzer genera resultados del diagnóstico (errores y advertencias) para informar a los clientes sobre los defectos de código potenciales y sugiere posibles soluciones para mejoras.


installerapp-2

Instalando el PSScriptAnalyzer


Para aprovechar esta funcionalidad, primero debemos instalarla.

En el Module Browser de nuestro Windows PowerShell ISE podemos localizar el PSScriptAnalyzer aprovechando el uso del buscador

O podemos ejecutar el comando

  • Get-Command -module PSScriptAnalyzer

PSScriptAnalyzer-01

Con el cual dispondremos de la versión 1.0 del PSScriptAnalyzer.

Sin embargo, como podremos ver en el Module Browser de nuestro Windows PowerShell ISE, ya hay disponible una nueva versión PSSCriptAnalyzer 1.0.1

PSScriptAnalyzer-02

Así que será mejor no ejecutar el comando, ya que si lo hacemos, al intentar instalar la versión más reciente del PSSCriptAnalyzer 1.0.1 obtendremos el siguiente error

PSScriptAnalyzer-03

Si hemos ido muy de prisa, tendremos que desinstalar la versión 1.0.0 para poder realizar la instalación de la nueva versión.

En caso de que no podamos hacer la desinstalación, podremos cerrar el Windows PowerShell ISE, abrir un Explorador de Windows, ir a la ruta: C:\Program Files (x86)\WindowsPowerShell\Modules
y eliminar la carpeta PSScriptAnalyzer

Luego podremos abrir nuevamente el Windows PowerShell ISE

Y ejecutar el comando:

  • Install-Module -Name ‘PSScriptAnalyzer’ -Force -Scope AllUsers -Verbose -RequiredVersion 1.0.1

PSScriptAnalyzer-04

Observaremos como se instala la versión 1.0.1 del PSScriptAnalyzer

PSScriptAnalyzer-05

Cerramos entonces el Windows PowerShell ISE y al volver a ejecutarlo podremos ver en nuestra colección de módulos instalados que ya contamos con el PSScriptAnalyzer 1.0.1

PSScriptAnalyzer-06


conociendo

Conociendo el PSScriptAnalyzer


El PSScriptAnalyzer ofrece dos comandos:

  • Get-ScriptAnalyzerRule
  • Invoke-ScriptAnalyzer

Para conocer el detalle de estos, podemos ejecutar los comandos

  • get-help Get-ScriptAnalyzerRule

PSScriptAnalyzer-07

  • get-help Invoke-ScriptAnalyzer

PSScriptAnalyzer-08

Sin embargo, es posible que observemos poca información.

Si es el caso, recomendamos ejecutar el comando

  • Update-Help

PSScriptAnalyzer-09

Para obtener el mejor detalle de los comandos

PSScriptAnalyzer-10

PSScriptAnalyzer-11


scan

Utilizando el PSScriptAnalyzer


Ver reglas instaladas

Podemos ver las reglas instaladas ejecutando el comando

  • Get-ScriptAnalyzerRule

PSScriptAnalyzer-12

PSScriptAnalyzer-13

PSScriptAnalyzer-14

Ejecutar análisis de un script

Ejecutando PSScriptAnalyzer por consola

Para ejecutar el análisis de un script, nos colocamos en el directorio que contiene el script de PowerShell que deseamos analizar (en nuestro caso HelloWorld.ps1)

Y ejecutamos el comando

  • Invoke-ScriptAnalyzer .\HelloWorld.ps1

PSScriptAnalyzer-16

Podemos enviar el resultado del análisis a un archivo, por ejemplo

  • Invoke-ScriptAnalyzer .\HelloWorld.ps1 > HelloWorld.log

PSScriptAnalyzer-17b

Ejecutando PSScriptAnalyzer por el panel

También podemos abrir el script en el editor del Windows PowerShell ISE y en la pestaña ScriptAnalyzer pulsar el botón [Scan Script]

PSScriptAnalyzer-18

Aunque, si observamos con cuidado, notaremos que las reglas ejecutadas por esta vía solo serán:

  • Invoke-Expression use should be carefully considered

PSScriptAnalyzer-19

  • Cmdlet alias use should be avoided

PSScriptAnalyzer-20

  • Empty catch blocks should be avoided

PSScriptAnalyzer-21

  • Positional arguments should be avoided

PSScriptAnalyzer-22

  • Advanced Functions names should follow standard verb-noun naming convention

PSScriptAnalyzer-23

Referencias:

Deja una respuesta

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.