PowerShell / PowerShell/PSScriptAnalyzer

PSPossibleIncorrectComparisonWithNull fails to work with typecasted variables

Abierto
#943 4 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Area - Rules Issue - Enhancement
Lenguaje dominante
C#
Estrellas
2.2k
Forks
414
Merge medio
13 h 1 min
PR fusionados (30 d)
2

Descripción

Steps to reproduce

If you validate this script, it complains about PSPossibleIncorrectComparisonWithNull even though it is pretty clear $value must be a string.

Function Get-FooBar() {
    return "foobar"
}

[string]$value = (Get-FooBar)

if ($value -eq $null) {
    Write-Output 'value is $null'
} else {
    Write-Output 'value is not $null'
}

Expected behavior

It works perfectly fine if the value is type-casted like this:

Function Get-FooBar() {
    return "foobar"
}

$value = (Get-FooBar) -as [string]

if ($value -eq $null) {
    Write-Output 'value is $null'
} else {
    Write-Output 'value is not $null'
}

Actual behavior

So we get this error needlessly.

ERROR: test.ps1:9:5: PSPossibleIncorrectComparisonWithNull $null should be on the left side of equality comparisons.

Environment data

> $PSVersionTable
Name                           Value                                                                                               
----                           -----                                                                                               
PSVersion                      6.0.2                                                                                               
PSEdition                      Core                                                                                                
GitCommitId                    v6.0.2                                                                                              
OS                             Linux 4.15.10-1.el7.elrepo.x86_64 #1 SMP Thu Mar 15 10:05:52 EDT 2018                               
Platform                       Unix                                                                                                
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                             
PSRemotingProtocolVersion      2.3                                                                                                 
SerializationVersion           1.1.0.1                                                                                             
WSManStackVersion              3.0     

> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
1.16.1

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 con la regla PSPossibleIncorrectComparisonWithNull y reproduce la advertencia usando el primer script de PowerShell; después compárala con el ejemplo -as [string]. Sigue cómo la regla maneja las variables convertidas explícitamente a un tipo y añade o actualiza la cobertura para que no se emita la advertencia para la comparación segura mostrada, mientras los casos existentes siguen cubiertos.

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

Evaluación

Stack tecnológico
powershell
Área
tooling
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.