PowerShell / PowerShell/PSScriptAnalyzer
Rule Idea: Pipeline Type Checking against Output
Personne n'a encore pris cette issue.
- Langage dominant
- C#
- Étoiles
- 2.2k
- Forks
- 414
- Merge moyen
- 13 h 1 min
- PR mergées (30 j)
- 2
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par examiner les sources proposées des types de sortie, les vérifications des paramètres du pipeline, les exceptions de cast et les précédents JSDoc décrits dans l’issue. Définissez le point d’entrée et le périmètre de l’analyseur avant l’implémentation ; le travail est considéré comme terminé lorsqu’une approche arrêtée peut détecter les types incompatibles du pipeline, tout en excluant les valeurs pouvant être castées sans risque et en gérant les casts explicites ou les interfaces.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- powershell
- Domaine
- tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100