Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add rule for unused namespaces #2026

Open
MartinGC94 opened this issue Aug 29, 2024 · 2 comments
Open

Add rule for unused namespaces #2026

MartinGC94 opened this issue Aug 29, 2024 · 2 comments

Comments

@MartinGC94
Copy link

Summary of the new feature
It would be nice with a rule to find and remove unused using namespace statements similar to what you can do in C# in editors like VS.
Cleaning up unused namespaces can slightly improve type resolution performance and of course it makes scripts more neat and clean.

Proposed technical implementation details (optional)
Use FindAll on the root AST to find all Asts of the following types: TypeExpressionAst, TypeConstraintAst, AttributeAst and CommandAst where the command name is New-Object and try to resolve the specified TypeNames with GetReflectionType. Compare the written typename with the resolved typename and see if part of the namespace is missing, and if so if that part is listed in the list of namespaces. If it is then that namespace is in use and should stay.

For New-Object we can't use GetReflectionType so I'm not sure how to handle that. Type accelerators and in the future type/namespace aliases should probably also be taken into consideration.

What is the latest version of PSScriptAnalyzer at the point of writing

1.22.0

@MartinGC94 MartinGC94 changed the title Add new rule for unused namespaces Add rule for unused namespaces Aug 29, 2024
@SydneyhSmith
Copy link
Collaborator

Thanks @MartinGC94 this could be a tricky one since its a dynamic thing which needs the environment/session state

@bergmeister
Copy link
Collaborator

I'd support this but limit to just namespaces built into .NET/PowerShell because otherwise PSSA would need to know about namespaces defined in your module or others and load it. One can technically do that by doing this before running PSSA cmdlet but that's not the case for the editor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants