PowerShell / PowerShell/PSScriptAnalyzer
Rule Idea: Pipeline Type Checking against Output
Nessuno ha ancora preso questa issue.
- Lingua principale
- C#
- Stelle
- 2.2k
- Fork
- 414
- Merge medio
- 13h 1m
- PR unite (30g)
- 2
Descrizione
This is just a spitball idea to contribute feedback if it is maybe feasible, I might consider attempting a PR
Problem
Often when writing a pipeline you may pipe an incompatible type, and you won't find out until runtime.
Proposed solution
If the output type of a function can be explicitly determined by:
- Use the .OUTPUT comment based help section to define the output type of a function
- Take all explicit return keywords that explicitly cast to a type e.g.
return [MyType]@{}or can be simply derived from a typed variable e.g.$f = [MyType]::new();return $f
And the function being called either to or from meets the following criteria:
- Has strictly typed non-primitive parameter or ValueFromPipeline
Then we should be able to safely issue a warning or error stating something like "MyFunction expected [MyType] but is receiving [WrongType] via the pipeline" as a static analysis.
#Issues
- Easily castable types like string we have to exclude, they will basically always match
- Probably should support/detect explicit casts or interfaces
Prior Art
How JSDoc can be used to test for type safety in normally-untyped javascript.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia esaminando le fonti proposte dei tipi di output, i controlli dei parametri della pipeline, le eccezioni di casting e i precedenti JSDoc descritti nell’issue. Definisci il punto di ingresso e l’ambito dell’analizzatore prima dell’implementazione; il lavoro è considerato completato quando un approccio definito è in grado di rilevare i tipi incompatibili della pipeline, escludendo i valori convertibili in modo sicuro e gestendo i cast espliciti o le interfacce.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- powershell
- Ambito
- tooling
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 25/100