Skip to content

MA0008: do not overflow the stack on cyclic struct layouts - #1640

Merged
meziantou merged 2 commits into
mainfrom
feature/youthful-jepsen-1bab00
Oct 17, 2026
Merged

meziantou merged 2 commits into
mainfrom
feature/youthful-jepsen-1bab00

Conversation

@meziantou

Copy link
Copy Markdown
Owner

MA0008 (UseStructLayoutAttributeAnalyzer) crashed the compiler process with a stack overflow on invalid code where a struct's fields cycle back to the struct (CS0523). A fuzzing campaign found it with this input:

internal struct Data
{
    publicainer
{
 =   internal Data _data;
}

Cause

IsBlittableType from Meziantou.Framework.Roslyn recurses into struct fields with no limit. A struct that contains itself, directly or through other structs, makes it recurse forever. A generic struct such as struct D<T> { D<D<T>> d; } creates a new constructed type at every level, so remembering visited types wouldn't stop it either.

Change

  • MA0008 now uses its own copy of the blittable check, with a depth limit of 32. A struct nested deeper than that is treated as not blittable, so no diagnostic is reported. MA0008 is the only rule that called IsBlittableType.
  • Added WithCyclicStruct_ShouldNotReportDiagnostic. It covers a struct that contains itself, two structs that contain each other, and the generic case, and expects CS0523 and no MA0008.

Testing

  • Before the fix, the new test crashed the test host with "Stack overflow".
  • After the fix, all 20 UseStructLayoutAttributeAnalyzerTests pass on roslyn5.9 and roslyn4.8.
  • The original fuzzer input passes through the analyzer in a temporary test, which isn't committed.
  • dotnet run --project src/DocumentationGenerator changes no files.

Note for reviewers: test restore currently fails on main with NU1902/NU1903 (System.Security.Cryptography.Pkcs 9.0.6 advisory, pulled in by the Roslyn testing packages). I ran the tests locally with -p:NuGetAudit=false. This PR doesn't change anything about that.

meziantou and others added 2 commits October 17, 2026 16:06
The fields of an invalid struct can cycle back to the struct (CS0523), and
generic structs can expand into an infinite number of types. IsBlittableType
from Meziantou.Framework.Roslyn recursed without limit and crashed the compiler.
Use a local check with a depth limit instead.
@meziantou
meziantou enabled auto-merge (squash) October 17, 2026 20:52
@meziantou
meziantou merged commit c4e64d8 into main Oct 17, 2026
27 of 28 checks passed
@meziantou
meziantou deleted the feature/youthful-jepsen-1bab00 branch October 17, 2026 20:54
This was referenced Oct 17, 2026
IhateTrains pushed a commit to ParadoxGameConverters/ImperatorToCK3 that referenced this pull request Oct 19, 2026
Updated
[Meziantou.Analyzer](https://github.com/meziantou/Meziantou.Analyzer)
from 3.0.303 to 3.0.312.

<details>
<summary>Release notes</summary>

_Sourced from [Meziantou.Analyzer's
releases](https://github.com/meziantou/Meziantou.Analyzer/releases)._

## 3.0.312

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.312>

## What's Changed
* Read the usage of the cache entries once before sorting them for the
eviction by @​meziantou in
meziantou/Meziantou.Analyzer#1734


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.311...3.0.312

## 3.0.311

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.311>

## What's Changed
* Fuzz: remove the Moq, MSTest, Newtonsoft.Json, NUnit and Serilog
package references by @​meziantou in
meziantou/Meziantou.Analyzer#1712
* Fuzz: report a regression only when the fuzzed commit contains the fix
by @​meziantou in
meziantou/Meziantou.Analyzer#1733
* MA0110: track the node to fix when the regex is in an attribute of the
type by @​meziantou in
meziantou/Meziantou.Analyzer#1731


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.310...3.0.311

## 3.0.310

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.310>

## What's Changed
* MA0190: find the method declaration after updating the call sites by
@​meziantou in meziantou/Meziantou.Analyzer#1708
* MA0011: do not bind the invocations of attribute arguments
speculatively by @​meziantou in
meziantou/Meziantou.Analyzer#1709
* Fuzz: do not blame the rules for the inputs on which Roslyn fails by
@​meziantou in meziantou/Meziantou.Analyzer#1710
* MA0010: do not offer the code fix when the class has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1700


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.309...3.0.310

## 3.0.309

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.309>

## What's Changed
* MA0110: keep the variable when it cannot be removed or renamed by
@​meziantou in meziantou/Meziantou.Analyzer#1698
* MA0071: do not move the attributes of the else block by @​meziantou in
meziantou/Meziantou.Analyzer#1699
* MA0077: do not throw when Equals(T) is declared several times by
@​meziantou in meziantou/Meziantou.Analyzer#1701
* MA0187: do not offer the code fix when the property has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1702
* MA0102: do not offer the code fix when the diagnostic is not on a
member by @​meziantou in
meziantou/Meziantou.Analyzer#1703
* MA0117: do not offer the code fix when the property has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1704
* MA0189: do not offer the code fix when the fixed buffer has no name or
type by @​meziantou in
meziantou/Meziantou.Analyzer#1705
* MA0089: fix the single-character constants that are not literals by
@​meziantou in meziantou/Meziantou.Analyzer#1706
* MA0004: fix the await expressions without semicolon by @​meziantou in
meziantou/Meziantou.Analyzer#1707


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.308...3.0.309

## 3.0.308

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.308>

## What's Changed
* MA0137, MA0138: do not offer the rename when the name would be empty
or the declaration does not compile by @​meziantou in
meziantou/Meziantou.Analyzer#1697
* MA0067: do not report System.Guid used as an attribute by @​meziantou
in meziantou/Meziantou.Analyzer#1696


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.307...3.0.308

## 3.0.307

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.307>

## What's Changed
* MA0002: insert the comparer at the right position when an extension
method is called as a static method by @​meziantou in
meziantou/Meziantou.Analyzer#1670
* MA0044: do not offer the code fix when ToString is used as a statement
by @​meziantou in
meziantou/Meziantou.Analyzer#1669
* MA0185: do not offer the code fix when string.Create is used as a
statement by @​meziantou in
meziantou/Meziantou.Analyzer#1668
* MA0101: do not offer the code fix for interpolated strings by
@​meziantou in meziantou/Meziantou.Analyzer#1667
* MA0187: do not offer the code fix when the class has an explicit
constructor by @​meziantou in
meziantou/Meziantou.Analyzer#1666
* MA0004: fix the code fix when the await expression is an argument by
@​meziantou in meziantou/Meziantou.Analyzer#1665
* MA0102: do not report partial members by @​meziantou in
meziantou/Meziantou.Analyzer#1664
* MA0093: do not offer EventArgs.Empty when the event args are generic
by @​meziantou in
meziantou/Meziantou.Analyzer#1663
* MA0053: do not report classes used as generic constraints by
@​meziantou in meziantou/Meziantou.Analyzer#1662
* Overload finder: Half is not implicitly convertible to float or double
by @​meziantou in
meziantou/Meziantou.Analyzer#1661
* MA0042, MA0045: make the enclosing function async in the code fix by
@​meziantou in meziantou/Meziantou.Analyzer#1660


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.306...3.0.307

## 3.0.306

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.306>

## What's Changed
* Allow the fuzzer to open up to 50 issues per run by @​meziantou in
meziantou/Meziantou.Analyzer#1652
* Build the fuzz project after the other builds of build_with_analyzers
by @​meziantou in
meziantou/Meziantou.Analyzer#1671
* MA0038: fix the analyzer crash on invalid code and the code fixes that
break the code by @​meziantou in
meziantou/Meziantou.Analyzer#1653
* MA0194: do not throw on invalid code by @​meziantou in
meziantou/Meziantou.Analyzer#1654
* MA0009, MA0023: do not throw when the GeneratedRegex arguments are
invalid by @​meziantou in
meziantou/Meziantou.Analyzer#1655
* MA0110: do not report invalid patterns and fix the partial property
used as a statement by @​meziantou in
meziantou/Meziantou.Analyzer#1656
* MA0182: remove all the parts of a partial type and analyze the
delegate signatures by @​meziantou in
meziantou/Meziantou.Analyzer#1657
* MA0036: do not report classes that contain protected members by
@​meziantou in meziantou/Meziantou.Analyzer#1658
* MA0137, MA0138: do not rename a method to a name that is already used
by @​meziantou in
meziantou/Meziantou.Analyzer#1659


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.305...3.0.306

## 3.0.305

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.305>

## What's Changed
* MA0008: do not overflow the stack on cyclic struct layouts by
@​meziantou in meziantou/Meziantou.Analyzer#1640


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.304...3.0.305

## 3.0.304

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.304>

## What's Changed
* Add fuzz tests for the analyzers and the code fixers by @​meziantou in
meziantou/Meziantou.Analyzer#1641


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.303...3.0.304

Commits viewable in [compare
view](meziantou/Meziantou.Analyzer@3.0.303...3.0.312).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Meziantou.Analyzer&package-manager=nuget&previous-version=3.0.303&new-version=3.0.312)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
vdolek pushed a commit to EvilBrainsTechnology/EvilCase that referenced this pull request Oct 20, 2026
Updated
[Meziantou.Analyzer](https://github.com/meziantou/Meziantou.Analyzer)
from 3.0.299 to 3.0.312.

<details>
<summary>Release notes</summary>

_Sourced from [Meziantou.Analyzer's
releases](https://github.com/meziantou/Meziantou.Analyzer/releases)._

## 3.0.312

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.312>

## What's Changed
* Read the usage of the cache entries once before sorting them for the
eviction by @​meziantou in
meziantou/Meziantou.Analyzer#1734


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.311...3.0.312

## 3.0.311

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.311>

## What's Changed
* Fuzz: remove the Moq, MSTest, Newtonsoft.Json, NUnit and Serilog
package references by @​meziantou in
meziantou/Meziantou.Analyzer#1712
* Fuzz: report a regression only when the fuzzed commit contains the fix
by @​meziantou in
meziantou/Meziantou.Analyzer#1733
* MA0110: track the node to fix when the regex is in an attribute of the
type by @​meziantou in
meziantou/Meziantou.Analyzer#1731


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.310...3.0.311

## 3.0.310

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.310>

## What's Changed
* MA0190: find the method declaration after updating the call sites by
@​meziantou in meziantou/Meziantou.Analyzer#1708
* MA0011: do not bind the invocations of attribute arguments
speculatively by @​meziantou in
meziantou/Meziantou.Analyzer#1709
* Fuzz: do not blame the rules for the inputs on which Roslyn fails by
@​meziantou in meziantou/Meziantou.Analyzer#1710
* MA0010: do not offer the code fix when the class has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1700


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.309...3.0.310

## 3.0.309

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.309>

## What's Changed
* MA0110: keep the variable when it cannot be removed or renamed by
@​meziantou in meziantou/Meziantou.Analyzer#1698
* MA0071: do not move the attributes of the else block by @​meziantou in
meziantou/Meziantou.Analyzer#1699
* MA0077: do not throw when Equals(T) is declared several times by
@​meziantou in meziantou/Meziantou.Analyzer#1701
* MA0187: do not offer the code fix when the property has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1702
* MA0102: do not offer the code fix when the diagnostic is not on a
member by @​meziantou in
meziantou/Meziantou.Analyzer#1703
* MA0117: do not offer the code fix when the property has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1704
* MA0189: do not offer the code fix when the fixed buffer has no name or
type by @​meziantou in
meziantou/Meziantou.Analyzer#1705
* MA0089: fix the single-character constants that are not literals by
@​meziantou in meziantou/Meziantou.Analyzer#1706
* MA0004: fix the await expressions without semicolon by @​meziantou in
meziantou/Meziantou.Analyzer#1707


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.308...3.0.309

## 3.0.308

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.308>

## What's Changed
* MA0137, MA0138: do not offer the rename when the name would be empty
or the declaration does not compile by @​meziantou in
meziantou/Meziantou.Analyzer#1697
* MA0067: do not report System.Guid used as an attribute by @​meziantou
in meziantou/Meziantou.Analyzer#1696


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.307...3.0.308

## 3.0.307

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.307>

## What's Changed
* MA0002: insert the comparer at the right position when an extension
method is called as a static method by @​meziantou in
meziantou/Meziantou.Analyzer#1670
* MA0044: do not offer the code fix when ToString is used as a statement
by @​meziantou in
meziantou/Meziantou.Analyzer#1669
* MA0185: do not offer the code fix when string.Create is used as a
statement by @​meziantou in
meziantou/Meziantou.Analyzer#1668
* MA0101: do not offer the code fix for interpolated strings by
@​meziantou in meziantou/Meziantou.Analyzer#1667
* MA0187: do not offer the code fix when the class has an explicit
constructor by @​meziantou in
meziantou/Meziantou.Analyzer#1666
* MA0004: fix the code fix when the await expression is an argument by
@​meziantou in meziantou/Meziantou.Analyzer#1665
* MA0102: do not report partial members by @​meziantou in
meziantou/Meziantou.Analyzer#1664
* MA0093: do not offer EventArgs.Empty when the event args are generic
by @​meziantou in
meziantou/Meziantou.Analyzer#1663
* MA0053: do not report classes used as generic constraints by
@​meziantou in meziantou/Meziantou.Analyzer#1662
* Overload finder: Half is not implicitly convertible to float or double
by @​meziantou in
meziantou/Meziantou.Analyzer#1661
* MA0042, MA0045: make the enclosing function async in the code fix by
@​meziantou in meziantou/Meziantou.Analyzer#1660


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.306...3.0.307

## 3.0.306

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.306>

## What's Changed
* Allow the fuzzer to open up to 50 issues per run by @​meziantou in
meziantou/Meziantou.Analyzer#1652
* Build the fuzz project after the other builds of build_with_analyzers
by @​meziantou in
meziantou/Meziantou.Analyzer#1671
* MA0038: fix the analyzer crash on invalid code and the code fixes that
break the code by @​meziantou in
meziantou/Meziantou.Analyzer#1653
* MA0194: do not throw on invalid code by @​meziantou in
meziantou/Meziantou.Analyzer#1654
* MA0009, MA0023: do not throw when the GeneratedRegex arguments are
invalid by @​meziantou in
meziantou/Meziantou.Analyzer#1655
* MA0110: do not report invalid patterns and fix the partial property
used as a statement by @​meziantou in
meziantou/Meziantou.Analyzer#1656
* MA0182: remove all the parts of a partial type and analyze the
delegate signatures by @​meziantou in
meziantou/Meziantou.Analyzer#1657
* MA0036: do not report classes that contain protected members by
@​meziantou in meziantou/Meziantou.Analyzer#1658
* MA0137, MA0138: do not rename a method to a name that is already used
by @​meziantou in
meziantou/Meziantou.Analyzer#1659


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.305...3.0.306

## 3.0.305

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.305>

## What's Changed
* MA0008: do not overflow the stack on cyclic struct layouts by
@​meziantou in meziantou/Meziantou.Analyzer#1640


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.304...3.0.305

## 3.0.304

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.304>

## What's Changed
* Add fuzz tests for the analyzers and the code fixers by @​meziantou in
meziantou/Meziantou.Analyzer#1641


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.303...3.0.304

## 3.0.303

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.303>

## What's Changed
* MA0100: do not look up GetAwaiter for the types that cannot be awaited
by @​meziantou in
meziantou/Meziantou.Analyzer#1635
* Reduce the time spent in MA0154, MA0218 and MA0219 by @​meziantou in
meziantou/Meziantou.Analyzer#1638
* Reduce the time spent in MA0182 by @​meziantou in
meziantou/Meziantou.Analyzer#1636
* Reduce the time spent in MA0134 by @​meziantou in
meziantou/Meziantou.Analyzer#1637


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.302...3.0.303

## 3.0.302

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.302>

## What's Changed
* Reduce the time spent in MA0001, MA0002, MA0011, MA0026, MA0074 and
MA0150 by @​meziantou in
meziantou/Meziantou.Analyzer#1634


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.301...3.0.302

## 3.0.301

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.301>

## What's Changed
* Reduce the CPU and the memory used by MA0202 by @​meziantou in
meziantou/Meziantou.Analyzer#1633


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.300...3.0.301

## 3.0.300

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.300>

## What's Changed
* MA0015, MA0043: do not enumerate all the symbols in scope by
@​meziantou in meziantou/Meziantou.Analyzer#1632


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.299...3.0.300

Commits viewable in [compare
view](meziantou/Meziantou.Analyzer@3.0.299...3.0.312).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Meziantou.Analyzer&package-manager=nuget&previous-version=3.0.299&new-version=3.0.312)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
kivilev pushed a commit to kivilev/plsql-developer-text-tools that referenced this pull request Oct 21, 2026
Updated
[Meziantou.Analyzer](https://github.com/meziantou/Meziantou.Analyzer)
from 3.0.303 to 3.0.315.

<details>
<summary>Release notes</summary>

_Sourced from [Meziantou.Analyzer's
releases](https://github.com/meziantou/Meziantou.Analyzer/releases)._

## 3.0.315

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.315>

## What's Changed
* Use two generations in BoundedCache instead of sorting the entries by
last usage by @​meziantou in
meziantou/Meziantou.Analyzer#1739


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.314...3.0.315

## 3.0.314

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.314>

## What's Changed
* MA0011: find the overload before computing the culture sensitivity by
@​meziantou in meziantou/Meziantou.Analyzer#1738


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.313...3.0.314

## 3.0.313

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.313>

## What's Changed
* Fix the CA5394 build error in BoundedCacheTests by @​meziantou in
meziantou/Meziantou.Analyzer#1735
* MA0243: Use an escape sequence for invisible characters by @​meziantou
in meziantou/Meziantou.Analyzer#1737


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.312...3.0.313

## 3.0.312

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.312>

## What's Changed
* Read the usage of the cache entries once before sorting them for the
eviction by @​meziantou in
meziantou/Meziantou.Analyzer#1734


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.311...3.0.312

## 3.0.311

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.311>

## What's Changed
* Fuzz: remove the Moq, MSTest, Newtonsoft.Json, NUnit and Serilog
package references by @​meziantou in
meziantou/Meziantou.Analyzer#1712
* Fuzz: report a regression only when the fuzzed commit contains the fix
by @​meziantou in
meziantou/Meziantou.Analyzer#1733
* MA0110: track the node to fix when the regex is in an attribute of the
type by @​meziantou in
meziantou/Meziantou.Analyzer#1731


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.310...3.0.311

## 3.0.310

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.310>

## What's Changed
* MA0190: find the method declaration after updating the call sites by
@​meziantou in meziantou/Meziantou.Analyzer#1708
* MA0011: do not bind the invocations of attribute arguments
speculatively by @​meziantou in
meziantou/Meziantou.Analyzer#1709
* Fuzz: do not blame the rules for the inputs on which Roslyn fails by
@​meziantou in meziantou/Meziantou.Analyzer#1710
* MA0010: do not offer the code fix when the class has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1700


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.309...3.0.310

## 3.0.309

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.309>

## What's Changed
* MA0110: keep the variable when it cannot be removed or renamed by
@​meziantou in meziantou/Meziantou.Analyzer#1698
* MA0071: do not move the attributes of the else block by @​meziantou in
meziantou/Meziantou.Analyzer#1699
* MA0077: do not throw when Equals(T) is declared several times by
@​meziantou in meziantou/Meziantou.Analyzer#1701
* MA0187: do not offer the code fix when the property has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1702
* MA0102: do not offer the code fix when the diagnostic is not on a
member by @​meziantou in
meziantou/Meziantou.Analyzer#1703
* MA0117: do not offer the code fix when the property has no name by
@​meziantou in meziantou/Meziantou.Analyzer#1704
* MA0189: do not offer the code fix when the fixed buffer has no name or
type by @​meziantou in
meziantou/Meziantou.Analyzer#1705
* MA0089: fix the single-character constants that are not literals by
@​meziantou in meziantou/Meziantou.Analyzer#1706
* MA0004: fix the await expressions without semicolon by @​meziantou in
meziantou/Meziantou.Analyzer#1707


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.308...3.0.309

## 3.0.308

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.308>

## What's Changed
* MA0137, MA0138: do not offer the rename when the name would be empty
or the declaration does not compile by @​meziantou in
meziantou/Meziantou.Analyzer#1697
* MA0067: do not report System.Guid used as an attribute by @​meziantou
in meziantou/Meziantou.Analyzer#1696


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.307...3.0.308

## 3.0.307

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.307>

## What's Changed
* MA0002: insert the comparer at the right position when an extension
method is called as a static method by @​meziantou in
meziantou/Meziantou.Analyzer#1670
* MA0044: do not offer the code fix when ToString is used as a statement
by @​meziantou in
meziantou/Meziantou.Analyzer#1669
* MA0185: do not offer the code fix when string.Create is used as a
statement by @​meziantou in
meziantou/Meziantou.Analyzer#1668
* MA0101: do not offer the code fix for interpolated strings by
@​meziantou in meziantou/Meziantou.Analyzer#1667
* MA0187: do not offer the code fix when the class has an explicit
constructor by @​meziantou in
meziantou/Meziantou.Analyzer#1666
* MA0004: fix the code fix when the await expression is an argument by
@​meziantou in meziantou/Meziantou.Analyzer#1665
* MA0102: do not report partial members by @​meziantou in
meziantou/Meziantou.Analyzer#1664
* MA0093: do not offer EventArgs.Empty when the event args are generic
by @​meziantou in
meziantou/Meziantou.Analyzer#1663
* MA0053: do not report classes used as generic constraints by
@​meziantou in meziantou/Meziantou.Analyzer#1662
* Overload finder: Half is not implicitly convertible to float or double
by @​meziantou in
meziantou/Meziantou.Analyzer#1661
* MA0042, MA0045: make the enclosing function async in the code fix by
@​meziantou in meziantou/Meziantou.Analyzer#1660


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.306...3.0.307

## 3.0.306

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.306>

## What's Changed
* Allow the fuzzer to open up to 50 issues per run by @​meziantou in
meziantou/Meziantou.Analyzer#1652
* Build the fuzz project after the other builds of build_with_analyzers
by @​meziantou in
meziantou/Meziantou.Analyzer#1671
* MA0038: fix the analyzer crash on invalid code and the code fixes that
break the code by @​meziantou in
meziantou/Meziantou.Analyzer#1653
* MA0194: do not throw on invalid code by @​meziantou in
meziantou/Meziantou.Analyzer#1654
* MA0009, MA0023: do not throw when the GeneratedRegex arguments are
invalid by @​meziantou in
meziantou/Meziantou.Analyzer#1655
* MA0110: do not report invalid patterns and fix the partial property
used as a statement by @​meziantou in
meziantou/Meziantou.Analyzer#1656
* MA0182: remove all the parts of a partial type and analyze the
delegate signatures by @​meziantou in
meziantou/Meziantou.Analyzer#1657
* MA0036: do not report classes that contain protected members by
@​meziantou in meziantou/Meziantou.Analyzer#1658
* MA0137, MA0138: do not rename a method to a name that is already used
by @​meziantou in
meziantou/Meziantou.Analyzer#1659


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.305...3.0.306

## 3.0.305

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.305>

## What's Changed
* MA0008: do not overflow the stack on cyclic struct layouts by
@​meziantou in meziantou/Meziantou.Analyzer#1640


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.304...3.0.305

## 3.0.304

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.304>

## What's Changed
* Add fuzz tests for the analyzers and the code fixers by @​meziantou in
meziantou/Meziantou.Analyzer#1641


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.303...3.0.304

Commits viewable in [compare
view](meziantou/Meziantou.Analyzer@3.0.303...3.0.315).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Meziantou.Analyzer&package-manager=nuget&previous-version=3.0.303&new-version=3.0.315)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

1 participant