Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upWhat the hosted PSSA could look like #1078
Conversation
...hellEditorServices/Services/TextDocument/Handlers/TextDocumentHandler.cs
Outdated
Show resolved
Hide resolved
04c3440
to
e5aac44
e5aac44
to
a038c32
|
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(); |
| _analyzerSettings = _analyzer.CreateSettings(s_includedRules); | ||
| _analyzerSettings.Severities.AddRange(new [] { | ||
| RuleSeverity.Error.ToString(), | ||
| RuleSeverity.Information.ToString(), |
rjmholt
Dec 10, 2019
Member
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) |
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.csby half!I recommend just looking at my version of the
AnalysisService.csand 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 properSettingstypeRemove theScriptFileMarkertype which seems to be some intermediate type between aDiagnosticRecordfrom PSSA and the outgoing (aka language server protocol) type ofDiagnostic. I tried it, it's totally possible to switch over to usingDiagnosticeverywhereScriptFileMarkeris used. That would remove another type and a good chunk of code.ScriptFileMarkeris gone, we can continue to remove random types likeMarkerCorrectioncould be removed but this involves understanding CodeAction request morecc @JamesWTruher
Some notes that I took on the Hosted Analyzer:
Analyze()-Invoke-ScriptAnalyzerhas a-Severityparam. Can we have aseverityparam?Fix()-Invoke-FormatterHas a-Rangeparameter that we use. Can we have arangeparameter?Settings.*RuleArgument()- should returnSettingsobjects so we can chain them like the builder patternFormat()-Invoke-FormatterHas a-Rangeparameter that we use. Can we have arangeparameter?Settingsobject 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()