PowerShell / PowerShell/PSScriptAnalyzer

Rule Proposal: Warn on dot-sourced function

Offen
#696 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Issue - New Rule
Vorherrschende Sprache
C#
Sterne
2.2k
Forks
414
Ø Merge
13 Std. 1 Min.
Gemergte PRs (30 T.)
2

Beschreibung

I've inherited a project where everything is in, for lack of a better description, undeclared global scope, spread across several files. Functions don't have always have parameters, and are called with a dot before the function name. Variables are treated as global, though not declared. For example:

c:\Utils.ps1

function Write-MyLog {
$itemToLog | out-file c:\mylog.txt -append
}


c:\Interface.ps1

. c:\Utils.ps1

$itemToLog = "Something happened"
. Write-MyLog


Miraculously, this all works. Of course, I dare not change anything.

I would love it if ". Write-MyLog" came up as a warning, and even more so if there were some indication that "$itemToLog" in C:\Interface.ps1 was being used by the function called from c:\Utils.ps1.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie damit, das Verhalten in den Beispielskripten c:\Utils.ps1 und c:\Interface.ps1 zu reproduzieren, wobei Sie sich auf den dot-sourced Funktionsaufruf und die dateiübergreifende Variable $itemToLog konzentrieren. Erledigt bedeutet, dass der Analyzer vor dem angeforderten Konstrukt warnt und die angeforderte Angabe zur Variablennutzung liefert, wobei der Gültigkeitsbereich und die erwarteten Diagnosen abgestimmt sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
powershell
Bereich
tooling
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.