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

Preparations for SettingsHelper optimizations #3635

Merged

Conversation

bjornhellander
Copy link
Contributor

@bjornhellander bjornhellander commented Apr 10, 2023

Preparations for #3634: Some simple code cleanup and some changes to make it easier to optimize performance in SettingsHelper.

The changes to the analyzers were made for the second reason. The effect of that change will right now be that some analyzers which previously did not read the settings at all do so now, but some others that previously read them multiple times for the same compilation only read them once now. The net effect right now is hopefully around zero and without that change it will as far as I can see be impossible to take advantage of the SourceTextValueProvider in the analyzers that I have changed. The settings were read too late in the compilation process, so the SourceTextValueProvider can not be used. This is due to which analysis context structs that actually have the TryGetValue method to use the SourceTextValueProvider.

I threw away the two previous pull requests and started over to make it easier to review. Better with 2-3 smaller PRs than one big.

@codecov
Copy link

codecov bot commented Apr 10, 2023

Codecov Report

Merging #3635 (d3ea361) into master (ef1f91c) will decrease coverage by 0.01%.
The diff coverage is 96.87%.

❗ Current head d3ea361 differs from pull request most recent head ab8a6e8. Consider uploading reports for the commit ab8a6e8 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3635      +/-   ##
==========================================
- Coverage   93.25%   93.25%   -0.01%     
==========================================
  Files        1079     1079              
  Lines      113705   113696       -9     
  Branches     4023     4023              
==========================================
- Hits       106040   106031       -9     
  Misses       6630     6630              
  Partials     1035     1035              

@bjornhellander bjornhellander force-pushed the feature/settings-performance1 branch from c57c48d to ab8a6e8 Compare April 10, 2023 14:49
@sharwell sharwell merged commit e1fa460 into DotNetAnalyzers:master Apr 11, 2023
@sharwell sharwell added this to the 1.2-beta.next milestone Apr 11, 2023
@@ -290,7 +291,7 @@ private static void CheckBraceToken(SyntaxNodeAnalysisContext context, SyntaxTok
// Because the default Visual Studio code completion snippet for a do-while loop
// places the while expression on the same line as the closing brace, some users
// may want to allow that and not have SA1500 report it as a style error.
if (context.GetStyleCopSettings(context.CancellationToken).LayoutRules.AllowDoWhileOnClosingBrace)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 I'm guessing one of the follow-up PRs will remove this helper?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean the GetStyleCopSettings method that was previously called there? If so, I don't know. Some of them are used quite a lot in tests, but I will do my best :-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is the one you mentioned that can't benefit from caching optimizations.

@bjornhellander bjornhellander deleted the feature/settings-performance1 branch April 11, 2023 18:26
ThorstenSauter referenced this pull request in ThorstenSauter/NoPlan Jun 22, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[StyleCop.Analyzers](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers)
| nuget | patch | `1.2.0-beta.435` -> `1.2.0-beta.507` |

---

### Release Notes

<details>
<summary>DotNetAnalyzers/StyleCopAnalyzers</summary>

###
[`v1.2.0-beta.507`](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/releases/tag/1.2.0-beta.507)

[Compare
Source](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/compare/1.2.0-beta.435...1.2.0-beta.507)

#### What's Changed

- Update to StyleCop.Analyzers 1.2.0-beta.435 by
[@&#8203;sharwell](https://togithub.com/sharwell) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3499](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3499)
- Add c# 11 test project to opencover-report.ps1 by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3506](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3506)
- Use GetText instead of ToFullString by
[@&#8203;sharwell](https://togithub.com/sharwell) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3514](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3514)
- Keep tracked nodes in a list by
[@&#8203;sharwell](https://togithub.com/sharwell) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3525](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3525)
- Remove unnecessary nullable directives by
[@&#8203;sharwell](https://togithub.com/sharwell) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3530](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3530)
- Remove hard-coded language versions in test projects for c# 8, 9 and
10 by [@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3528](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3528)
- Update SA1515 to not let one range of trivia affect another by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3529](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3529)
- Mentioned VS 2022 by
[@&#8203;twojnarowski](https://togithub.com/twojnarowski) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3549](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3549)
- Remove byte order mark from schema file by
[@&#8203;martincostello](https://togithub.com/martincostello) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3562](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3562)
- Update SA1012 to expect no space between a property pattern's opening
brace and an enclosing list pattern's opening bracket by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3511](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3511)
- Update Microsoft.CodeAnalysis.CSharp.Workspaces to version 4.4.0 for
the c# 11 test project by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3580](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3580)
- Update SA1008 to handle positional patterns inside property patterns
by [@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3579](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3579)
- Update SA1000 to trigger after keywords is, or, and, not by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3585](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3585)
- Update SA1000.md by
[@&#8203;Youssef1313](https://togithub.com/Youssef1313) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3563](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3563)
- Update SA1313 to also allow incorrect names in explicitly implemented
methods from interfaces by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3569](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3569)
- Update SA1023 to not trigger first in line, inside a foreach without
braces by [@&#8203;bjornhellander](https://togithub.com/bjornhellander)
in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3543](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3543)
- Update SA1400 to recognize access modifier "file" by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3590](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3590)
- Update SA1206 to recognize modifier "file" by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3591](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3591)
- Update SA1000 to handle checked operator declarations correctly by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3505](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3505)
- Update SA1402 to handle records and record structs by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3570](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3570)
- Bump Newtonsoft.Json from 12.0.3 to 13.0.2 in
/StyleCop.Analyzers/StyleCop.Analyzers.Status.Generator by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3584](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3584)
- Update to the latest version of the testing library by
[@&#8203;sharwell](https://togithub.com/sharwell) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3601](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3601)
- Update so that SA1600 tests will be run with the expected language
version in test projects for c# 8 and above by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3614](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3614)
- Update reading of file_header_template and
stylecop.documentation.copyrightText to allow multiple lines by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3617](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3617)
- Update SA1015 to require trailing space after an explicit generic
return type in a lambda expression by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3625](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3625)
- Update to Microsoft.CodeAnalysis.Analyzers 3.3.5-beta1.23205.2 by
[@&#8203;sharwell](https://togithub.com/sharwell) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3628](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3628)
- Update SA1206 to handle c# 11 modifier "required" by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3535](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3535)
- Preparations for SettingsHelper optimizations by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3635](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3635)
- Correct SA1515 to not fire on the second line of a file header by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3633](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3633)
- Update AnalyzersExtensions and SettingsHelper to use cached JsonValue
objects where possible by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3642](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3642)
- Update SA1010 to not trigger on list patterns by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3507](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3507)
- Update NamingSettings and DocumentationSettings to keep one Regex
instance instead of calling Regex.IsMatch by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3639](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3639)
- Use ResxSourceGenerator for resource generation by
[@&#8203;sharwell](https://togithub.com/sharwell) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3343](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3343)
- Make XmlCommentHelper faster by
[@&#8203;ninedan](https://togithub.com/ninedan) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3651](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3651)
- Update RenameToUpperCaseCodeFixProvider to not offer a code fix if the
identifier only consists of underscores by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3637](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3637)
- Don't emit SA1414 for interface implementations by
[@&#8203;CollinAlpert](https://togithub.com/CollinAlpert) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3644](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3644)
- Support file-scoped namespaces in SA1516 by
[@&#8203;JakubLinhart](https://togithub.com/JakubLinhart) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3513](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3513)
- Update SA1137 to also consider init accessors by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3669](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3669)
- Update SA1500 to also consider init accessors by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3670](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3670)
- Update SA1513 to not trigger before an init accessor by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3666](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3666)
- Update SA1212 to also trigger for an init accessor before a getter by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3661](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3661)
- Update SA1513 codefix to use the existing newline character sequence
by [@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3607](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3607)
- Correct code fix for SA1130 when delegate expression is part of a cast
expression by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3516](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3516)
- Update so that c# 7 tests will be run with the expected language
version in test projects for c# 8 and above by
[@&#8203;bjornhellander](https://togithub.com/bjornhellander) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3616](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3616)
- SA1629 should allow full-sentence links instead of forcing the period
to glow white by [@&#8203;jnm2](https://togithub.com/jnm2) in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3371](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3371)

#### New Contributors

- [@&#8203;twojnarowski](https://togithub.com/twojnarowski) made their
first contribution in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3549](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3549)
- [@&#8203;ninedan](https://togithub.com/ninedan) made their first
contribution in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3651](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3651)
- [@&#8203;CollinAlpert](https://togithub.com/CollinAlpert) made their
first contribution in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3644](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3644)
- [@&#8203;JakubLinhart](https://togithub.com/JakubLinhart) made their
first contribution in
[https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3513](https://togithub.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3513)

**Full Changelog**:
DotNetAnalyzers/StyleCopAnalyzers@1.2.0-beta.435...1.2.0-beta.507

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/ThorstenSauter/NoPlan).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMzEuMCIsInVwZGF0ZWRJblZlciI6IjM1LjEzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Thorsten Sauter <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants