-
Notifications
You must be signed in to change notification settings - Fork 235
What the hosted PSSA could look like #1078
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
What the hosted PSSA could look like #1078
Conversation
src/PowerShellEditorServices/Services/TextDocument/Handlers/TextDocumentHandler.cs
Outdated
Show resolved
Hide resolved
04c3440
to
e5aac44
Compare
e5aac44
to
a038c32
Compare
Issues
======
+ Solved 18
- Added 1
Complexity increasing per file
==============================
- src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs 5
- src/PowerShellEditorServices/Services/Analysis/MarkerCorrection.cs 1
- src/PowerShellEditorServices/Services/Analysis/DiagnosticCreationHelper.cs 4
Complexity decreasing per file
==============================
+ src/PowerShellEditorServices/Services/TextDocument/Handlers/FormattingHandlers.cs -1
+ src/PowerShellEditorServices/Services/PowerShellContext/Handlers/GetCommentHelpHandler.cs -4
See the complete overview on Codacy |
} | ||
// If cancellation didn't throw an exception, | ||
// clean up the existing token | ||
_existingRequestCancellation.Dispose(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_analyzerSettings = _analyzer.CreateSettings(s_includedRules); | ||
_analyzerSettings.Severities.AddRange(new [] { | ||
RuleSeverity.Error.ToString(), | ||
RuleSeverity.Information.ToString(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be RuleSeverity.Warning
? Why is it that these are strings if we've gone to the effort to load the types?
scriptFile.DiagnosticMarkers); | ||
} | ||
} | ||
if (!ct.CanBeCanceled || ct.IsCancellationRequested) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we break if we can't cancel the token?
@TylerLeonhardt do you think there's any value in looking at this PR in particular 5 years later, or should I just close it and keep the idea in the back of minds of hosting PSSA? (We all know it would be nice to do, especially combined with a PSSA rewrite.) |
This is DRAFT. CI will fail because there's no nuget package on nuget.org!
This is the bare minimum work that I would do to adopt the hosted analyzer. It already cuts the code in
AnalysisService.cs
by half!I recommend just looking at my version of the
AnalysisService.cs
and looking around forHostedAnalyzer
,Analyze(
,Format(
- so you can see how the hosted analyzer is used there.Some additional work that could be done:
Hashtable
(when pertaining to PSSA) with the properSettings
typeRemove theScriptFileMarker
type which seems to be some intermediate type between aDiagnosticRecord
from PSSA and the outgoing (aka language server protocol) type ofDiagnostic
. I tried it, it's totally possible to switch over to usingDiagnostic
everywhereScriptFileMarker
is used. That would remove another type and a good chunk of code.ScriptFileMarker
is gone, we can continue to remove random types likeMarkerCorrection
could be removed but this involves understanding CodeAction request morecc @JamesWTruher
Some notes that I took on the Hosted Analyzer:
Analyze()
-Invoke-ScriptAnalyzer
has a-Severity
param. Can we have aseverity
param?Fix()
-Invoke-Formatter
Has a-Range
parameter that we use. Can we have arange
parameter?Settings.*RuleArgument()
- should returnSettings
objects so we can chain them like the builder patternFormat()
-Invoke-Formatter
Has a-Range
parameter that we use. Can we have arange
parameter?Settings
object from a list of strings (which are the rules we care about)?No they should not.Fix()
&Format()
- should those also have the ability to pass the AST in addition to the script?Cancellation support... this might be too much work... but it'd be nice. I've kinda worked around it in this PR by "cancelling" anything else after we get a response back fromdeferred.Analyze()