diff --git a/.editorconfig b/.editorconfig
index 4c92a8eef97a3..e95967a09e126 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -154,7 +154,7 @@ dotnet_diagnostic.IDE0055.severity = warning
# https://github.com/dotnet/roslyn-analyzers/issues/7436 - False positives from valid GetDeclaredSymbol calls
dotnet_diagnostic.RS1039.severity = none
-# These xUnit analyzers were disabled temporarily to let us move to the
+# These xUnit analyzers were disabled temporarily to let us move to the
# new xUnit and get past several component governance issues. The
# following issue tracks enabling them
#
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 34ac25cb4275e..e5433ff66698f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,5 +1,6 @@
# Automatically request reviews when a pull request changes any owned files
-# More information: https://github.com/blog/2392-introducing-code-owners
+
+# More information: https://github.com/blog/2392-introducing-code-owners
*.yml @dotnet/roslyn-infrastructure
.github/ @dotnet/roslyn-infrastructure
@@ -15,15 +16,20 @@ scripts/ @dotnet/roslyn-infrastructure
src/Analyzers/ @dotnet/roslyn-ide
src/CodeStyle/ @dotnet/roslyn-ide
src/Compilers/ @dotnet/roslyn-compiler
+
# Both IDE and Compiler traits are in this file, so we don't want to ping each other for changes to just this file.
+
# Technically this means that if someone changes _just_ this file no reviewers will be tagged, but this isn't likely
+
# to happen.
+
src/Compilers/Test/Core/Traits/Traits.cs
src/EditorFeatures/ @dotnet/roslyn-ide
src/Features/ @dotnet/roslyn-ide
src/Interactive/ @dotnet/roslyn-interactive
src/LanguageServer/ @dotnet/roslyn-ide
src/NuGet/ @dotnet/roslyn-infrastructure
+src/RoslynAnalyzers/ @dotnet/roslyn-ide
src/Scripting/ @dotnet/roslyn-interactive
src/Setup/ @dotnet/roslyn-infrastructure
src/Tools/AnalyzerRunner @dotnet/roslyn-ide
diff --git a/Roslyn.sln b/Roslyn.sln
index e93789c055083..704cad8e79ba5 100644
--- a/Roslyn.sln
+++ b/Roslyn.sln
@@ -585,6 +585,150 @@ Project("{9a19103f-16f7-4668-be54-9a1e7a4f7556}") = "Microsoft.CodeAnalysis.Exte
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.VisualStudio.LanguageServices.ExternalAccess.Copilot", "src\VisualStudio\ExternalAccess\Copilot\Microsoft.VisualStudio.LanguageServices.ExternalAccess.Copilot.csproj", "{9EB058F3-10C9-8F3F-AD9E-72CB362A0928}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analyzers", "Analyzers", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Text.Analyzers", "src\RoslynAnalyzers\Text.Analyzers\Core\Text.Analyzers.csproj", "{8087BDE4-6707-05A5-5F84-DFE6628E8EC8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Text.CSharp.Analyzers", "src\RoslynAnalyzers\Text.Analyzers\CSharp\Text.CSharp.Analyzers.csproj", "{B095320B-6854-EBEC-98DB-26E06D97183A}"
+EndProject
+Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Text.VisualBasic.Analyzers", "src\RoslynAnalyzers\Text.Analyzers\VisualBasic\Text.VisualBasic.Analyzers.vbproj", "{451EC146-D85B-EA72-D064-0A75E9F52C7F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Text.Analyzers", "Text.Analyzers", "{6FE0875A-E178-4766-BCC6-87D37F273102}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Text.Analyzers.Setup", "src\RoslynAnalyzers\Text.Analyzers\Setup\Text.Analyzers.Setup.csproj", "{2C3B6892-A23A-9A8F-431E-30869231F832}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Text.Analyzers.UnitTests", "src\RoslynAnalyzers\Text.Analyzers\UnitTests\Text.Analyzers.UnitTests.csproj", "{DE29FFE1-ABB8-3B45-0D58-768727CA8DB1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PublicApiAnalyzers", "src\RoslynAnalyzers\PublicApiAnalyzers\Core\Analyzers\Microsoft.CodeAnalysis.PublicApiAnalyzers.csproj", "{CE7C15D3-3B1B-84CF-1B4B-DA45533E9E83}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PublicApiAnalyzers", "PublicApiAnalyzers", "{0AD92ED3-387B-4975-BA2E-68A76E727959}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PublicApiAnalyzers.CodeFixes", "src\RoslynAnalyzers\PublicApiAnalyzers\Core\CodeFixes\Microsoft.CodeAnalysis.PublicApiAnalyzers.CodeFixes.csproj", "{6167C216-0C39-EBBA-2841-A8F864642DF1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PublicApiAnalyzers.Setup", "src\RoslynAnalyzers\PublicApiAnalyzers\Setup\Microsoft.CodeAnalysis.PublicApiAnalyzers.Setup.csproj", "{B3AADD0B-E103-A0F9-385F-1D18262B9C41}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PublicApiAnalyzers.UnitTests", "src\RoslynAnalyzers\PublicApiAnalyzers\UnitTests\Microsoft.CodeAnalysis.PublicApiAnalyzers.UnitTests.csproj", "{E8D25897-E52E-47DE-B3B8-CE916C9B9B80}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers", "src\RoslynAnalyzers\PerformanceSensitiveAnalyzers\Core\Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.csproj", "{A6844326-E313-F10A-7E99-89F54C73774C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PerformanceSensitiveAnalyzers", "PerformanceSensitiveAnalyzers", "{76B913A2-E33D-4C48-B206-8F14F0F94B06}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers", "src\RoslynAnalyzers\PerformanceSensitiveAnalyzers\CSharp\Analyzers\Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers.csproj", "{C7CAB909-965B-8674-56F1-98F3BE0BD87A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers.CodeFixes", "src\RoslynAnalyzers\PerformanceSensitiveAnalyzers\CSharp\CodeFixes\Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers.CodeFixes.csproj", "{24CB433D-438B-04D0-29F7-9F29EC7DC3C6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Setup", "src\RoslynAnalyzers\PerformanceSensitiveAnalyzers\Setup\Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Setup.csproj", "{9A98EE2B-BBBC-0D54-60D8-C36ABE80B340}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.UnitTests", "src\RoslynAnalyzers\PerformanceSensitiveAnalyzers\UnitTests\Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.UnitTests.csproj", "{C5591759-58B0-73D0-6EDC-4FFCBE819303}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Roslyn.Diagnostics.Analyzers", "src\RoslynAnalyzers\Roslyn.Diagnostics.Analyzers\Core\Roslyn.Diagnostics.Analyzers.csproj", "{AD0837BE-7912-AEDF-BDA9-2D2E4FE0CE0B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Roslyn.Diagnostic.Analyzers", "Roslyn.Diagnostic.Analyzers", "{56053920-5095-430D-9C8B-AFB2C40407B4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Roslyn.Diagnostics.CSharp.Analyzers", "src\RoslynAnalyzers\Roslyn.Diagnostics.Analyzers\CSharp\Roslyn.Diagnostics.CSharp.Analyzers.csproj", "{DEE77B19-9559-D47D-8EC4-C207152A9C2C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Roslyn.Diagnostics.Analyzers.Setup", "src\RoslynAnalyzers\Roslyn.Diagnostics.Analyzers\Setup\Roslyn.Diagnostics.Analyzers.Setup.csproj", "{93256CB0-F5C1-CF7B-1D19-307E6E01191B}"
+EndProject
+Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Roslyn.Diagnostics.VisualBasic.Analyzers", "src\RoslynAnalyzers\Roslyn.Diagnostics.Analyzers\VisualBasic\Roslyn.Diagnostics.VisualBasic.Analyzers.vbproj", "{A4A3650E-164F-9339-FA7B-606EFFD06268}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Roslyn.Diagnostics.Analyzers.UnitTests", "src\RoslynAnalyzers\Roslyn.Diagnostics.Analyzers\UnitTests\Roslyn.Diagnostics.Analyzers.UnitTests.csproj", "{B0453D30-45FE-B2BC-5404-4A9C985D7BFF}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Analyzer.Utilities", "src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.shproj", "{08735294-3E6B-4420-9916-E7B8C4EB874D}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Analyzer.CSharp.Utilities", "src\RoslynAnalyzers\Utilities\Compiler.CSharp\Analyzer.CSharp.Utilities.shproj", "{BE5FE32C-DA73-4EC5-809E-E11B05ACA398}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "FlowAnalysis.Utilities", "src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis.Utilities.shproj", "{FCB56CBA-FA35-46A8-86B7-BAE5433197D9}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Refactoring.Utilities", "src\RoslynAnalyzers\Utilities\Refactoring\Refactoring.Utilities.shproj", "{68528C1C-B163-49A6-A19D-24E10F500F90}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Refactoring.CSharp.Utilities", "src\RoslynAnalyzers\Utilities\Refactoring.CSharp\Refactoring.CSharp.Utilities.shproj", "{3055F932-0D1E-4823-A03A-7B62C7639BDA}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Refactoring.VisualBasic.Utilities", "src\RoslynAnalyzers\Utilities\Refactoring.VisualBasic\Refactoring.VisualBasic.Utilities.shproj", "{4C362C30-C4B1-4C4B-A545-DBF67C7E9153}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Workspaces.Utilities", "src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.shproj", "{9C4BC501-C0A6-4130-BA68-EF5FB0C640B0}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utilities", "Utilities", "{0DDCFE67-7D4E-4709-9882-EC032A031789}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Analyzer.Utilities.UnitTests", "src\RoslynAnalyzers\Utilities.UnitTests\Analyzer.Utilities.UnitTests.csproj", "{34A07D0C-32E6-E19B-337E-4E6CB722C606}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ResxSourceGenerator", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.ResxSourceGenerator\Microsoft.CodeAnalysis.ResxSourceGenerator\Microsoft.CodeAnalysis.ResxSourceGenerator.csproj", "{FCE0046B-03F8-78F6-86A1-8DDCEE8F4C9F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ResxSourceGenerator", "ResxSourceGenerator", "{616B9154-1EE8-45AE-9299-EBD0D51446E5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.ResxSourceGenerator\Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp\Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp.csproj", "{5DB3749D-E83C-7093-75B9-B617D1FB72C0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ResxSourceGenerator.VisualBasic", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.ResxSourceGenerator\Microsoft.CodeAnalysis.ResxSourceGenerator.VisualBasic\Microsoft.CodeAnalysis.ResxSourceGenerator.VisualBasic.csproj", "{DD05B30B-7C7D-CFF3-9C36-839D54A13B0C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ResxSourceGenerator.UnitTests", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.ResxSourceGenerator\Microsoft.CodeAnalysis.ResxSourceGenerator.UnitTests\Microsoft.CodeAnalysis.ResxSourceGenerator.UnitTests.csproj", "{7BA618DE-0BC8-886C-36DD-989B9C05FA96}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.BannedApiAnalyzers", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\Core\Microsoft.CodeAnalysis.BannedApiAnalyzers.csproj", "{8CE66034-25E2-8FF2-93A1-0BD3672AD86D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BannedApiAnalyzers", "BannedApiAnalyzers", "{FBF49D7B-F60C-41B5-8CEF-F1D41F84A387}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.CSharp.BannedApiAnalyzers", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\CSharp\Microsoft.CodeAnalysis.CSharp.BannedApiAnalyzers.csproj", "{3C4BCE69-B353-B5AA-E824-209A6D627BA3}"
+EndProject
+Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Microsoft.CodeAnalysis.VisualBasic.BannedApiAnalyzers", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\VisualBasic\Microsoft.CodeAnalysis.VisualBasic.BannedApiAnalyzers.vbproj", "{E11BAB8D-39ED-AC6C-6D69-1E5B5F3FB286}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.BannedApiAnalyzers.Setup", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\Setup\Microsoft.CodeAnalysis.BannedApiAnalyzers.Setup.csproj", "{D21CCB70-1EDB-8D13-F00F-CA280DE4C83E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.BannedApiAnalyzers.UnitTests", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\UnitTests\Microsoft.CodeAnalysis.BannedApiAnalyzers.UnitTests.csproj", "{801E5330-F8E0-CC40-CC9A-47FE42284871}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.AnalyzerUtilities", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.AnalyzerUtilities\Microsoft.CodeAnalysis.AnalyzerUtilities.csproj", "{0A1267E9-52FF-B8DE-8522-802BE55F41DA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GenerateAnalyzerNuspec", "src\RoslynAnalyzers\Tools\GenerateAnalyzerNuspec\GenerateAnalyzerNuspec.csproj", "{4312B163-9507-6A25-893B-C18ECBF896BF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Metrics", "src\RoslynAnalyzers\Tools\Metrics\Metrics.csproj", "{7005DD7B-D3B6-1360-313B-975974AA6254}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RulesetToEditorconfigConverter", "src\RoslynAnalyzers\Tools\RulesetToEditorconfigConverter\Source\RulesetToEditorconfigConverter.csproj", "{10E2810B-AEDC-AE32-911A-750DF29322F0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RulesetToEditorconfigConverter.UnitTests", "src\RoslynAnalyzers\Tools\RulesetToEditorconfigConverter\Tests\RulesetToEditorconfigConverter.UnitTests.csproj", "{6A85289A-97BE-DC01-FB92-7FD258FCDDB7}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{482C1FC7-4FD6-4381-8078-73BEBFAF4349}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Analyzers", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.Analyzers\Core\Microsoft.CodeAnalysis.Analyzers.csproj", "{923E34BA-CA8A-971E-7FF7-51DD346394A1}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.CodeAnalysis.Analyzers", "Microsoft.CodeAnalysis.Analyzers", "{A4E65246-D2F6-492F-8BD5-FE11DD89A19B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.CSharp.Analyzers", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.Analyzers\CSharp\Microsoft.CodeAnalysis.CSharp.Analyzers.csproj", "{CBC75308-5C91-83F0-5472-39C9445C8FFC}"
+EndProject
+Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Microsoft.CodeAnalysis.VisualBasic.Analyzers", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.Analyzers\VisualBasic\Microsoft.CodeAnalysis.VisualBasic.Analyzers.vbproj", "{BB08E86A-946F-C3BD-C607-989716B05D46}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Analyzers.UnitTests", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.Analyzers\UnitTests\Microsoft.CodeAnalysis.Analyzers.UnitTests.csproj", "{290ED315-ED26-F504-0583-848669298657}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Analyzers.Setup", "src\RoslynAnalyzers\Microsoft.CodeAnalysis.Analyzers\Setup\Microsoft.CodeAnalysis.Analyzers.Setup.csproj", "{E234FD18-B133-4CF4-2AC1-7E219BF54242}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Metrics.Legacy", "src\RoslynAnalyzers\Tools\Metrics.Legacy\Metrics.Legacy.csproj", "{8252A386-069A-0D7D-EAB4-B2E77833B443}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Test.Utilities", "src\RoslynAnalyzers\Test.Utilities\Test.Utilities.csproj", "{3F65D29D-ED95-2D6F-B927-47C5CF070AA5}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NuGet", "NuGet", "{7F040742-3C10-406A-A0FF-7FE621DEF671}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Analyzers.Package", "src\RoslynAnalyzers\NuGet\Microsoft.CodeAnalysis.Analyzers\Microsoft.CodeAnalysis.Analyzers.Package.csproj", "{BEF66A04-80EF-F6FD-E969-F441F709ECDA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.AnalyzerUtilities.Package", "src\RoslynAnalyzers\NuGet\Microsoft.CodeAnalysis.AnalyzerUtilities\Microsoft.CodeAnalysis.AnalyzerUtilities.Package.csproj", "{612E7B7D-8BE1-C279-2BD9-6191A97F2D03}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.BannedApiAnalyzers.Package", "src\RoslynAnalyzers\NuGet\Microsoft.CodeAnalysis.BannedApiAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers.Package.csproj", "{491BC06C-DEEC-0D65-985A-E192EC710BEF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Metrics.Package", "src\RoslynAnalyzers\NuGet\Microsoft.CodeAnalysis.Metrics\Microsoft.CodeAnalysis.Metrics.Package.csproj", "{E297099A-564C-A98A-BED5-547AD4799C81}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ResxSourceGenerator.Package", "src\RoslynAnalyzers\NuGet\Microsoft.CodeAnalysis.ResxSourceGenerator\Microsoft.CodeAnalysis.ResxSourceGenerator.Package.csproj", "{839F00DC-B547-E6C3-AB0B-EFABD62C5C82}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.RulesetToEditorconfigConverter.Package", "src\RoslynAnalyzers\NuGet\Microsoft.CodeAnalysis.RulesetToEditorconfigConverter\Microsoft.CodeAnalysis.RulesetToEditorconfigConverter.Package.csproj", "{5F15CE31-9DF5-CD0F-F998-8BF358F11752}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Package", "src\RoslynAnalyzers\NuGet\PerformanceSensitiveAnalyzers\Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Package.csproj", "{B2C73083-9F69-D41B-572D-050157413338}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.PublicApiAnalyzers.Package", "src\RoslynAnalyzers\NuGet\PublicApiAnalyzers\Microsoft.CodeAnalysis.PublicApiAnalyzers.Package.csproj", "{E27FA26C-6E34-F3F5-3005-67EF18A5CB8B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Roslyn.Diagnostics.Analyzers.Package", "src\RoslynAnalyzers\NuGet\Roslyn.Diagnostics.Analyzers\Roslyn.Diagnostics.Analyzers.Package.csproj", "{295E850B-D94D-3328-75AB-62828B4B85BA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Text.Analyzers.Package", "src\RoslynAnalyzers\NuGet\Text.Analyzers\Text.Analyzers.Package.csproj", "{A8C385EE-1798-2802-5533-9E9A12CC603E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GenerateDocumentationAndConfigFiles", "src\RoslynAnalyzers\Tools\GenerateDocumentationAndConfigFiles\GenerateDocumentationAndConfigFiles.csproj", "{A1EBC0BC-D378-B9B7-7A57-EF7DF11E3ED7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GenerateDocumentationAndConfigFilesForBrokenRuntime", "src\RoslynAnalyzers\Tools\GenerateDocumentationAndConfigFilesForBrokenRuntime\GenerateDocumentationAndConfigFilesForBrokenRuntime.csproj", "{29080628-23A6-1DCB-F15E-93F1D1682CC1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestReferenceAssembly", "src\RoslynAnalyzers\TestReferenceAssembly\TestReferenceAssembly.csproj", "{31EB654C-B562-73B4-2456-78FA875515D2}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1427,6 +1571,222 @@ Global
{9EB058F3-10C9-8F3F-AD9E-72CB362A0928}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9EB058F3-10C9-8F3F-AD9E-72CB362A0928}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9EB058F3-10C9-8F3F-AD9E-72CB362A0928}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8087BDE4-6707-05A5-5F84-DFE6628E8EC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8087BDE4-6707-05A5-5F84-DFE6628E8EC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8087BDE4-6707-05A5-5F84-DFE6628E8EC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8087BDE4-6707-05A5-5F84-DFE6628E8EC8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B095320B-6854-EBEC-98DB-26E06D97183A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B095320B-6854-EBEC-98DB-26E06D97183A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B095320B-6854-EBEC-98DB-26E06D97183A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B095320B-6854-EBEC-98DB-26E06D97183A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {451EC146-D85B-EA72-D064-0A75E9F52C7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {451EC146-D85B-EA72-D064-0A75E9F52C7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {451EC146-D85B-EA72-D064-0A75E9F52C7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {451EC146-D85B-EA72-D064-0A75E9F52C7F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2C3B6892-A23A-9A8F-431E-30869231F832}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2C3B6892-A23A-9A8F-431E-30869231F832}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2C3B6892-A23A-9A8F-431E-30869231F832}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2C3B6892-A23A-9A8F-431E-30869231F832}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DE29FFE1-ABB8-3B45-0D58-768727CA8DB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DE29FFE1-ABB8-3B45-0D58-768727CA8DB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DE29FFE1-ABB8-3B45-0D58-768727CA8DB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DE29FFE1-ABB8-3B45-0D58-768727CA8DB1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CE7C15D3-3B1B-84CF-1B4B-DA45533E9E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CE7C15D3-3B1B-84CF-1B4B-DA45533E9E83}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CE7C15D3-3B1B-84CF-1B4B-DA45533E9E83}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CE7C15D3-3B1B-84CF-1B4B-DA45533E9E83}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6167C216-0C39-EBBA-2841-A8F864642DF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6167C216-0C39-EBBA-2841-A8F864642DF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6167C216-0C39-EBBA-2841-A8F864642DF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6167C216-0C39-EBBA-2841-A8F864642DF1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B3AADD0B-E103-A0F9-385F-1D18262B9C41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B3AADD0B-E103-A0F9-385F-1D18262B9C41}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B3AADD0B-E103-A0F9-385F-1D18262B9C41}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B3AADD0B-E103-A0F9-385F-1D18262B9C41}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E8D25897-E52E-47DE-B3B8-CE916C9B9B80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E8D25897-E52E-47DE-B3B8-CE916C9B9B80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E8D25897-E52E-47DE-B3B8-CE916C9B9B80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E8D25897-E52E-47DE-B3B8-CE916C9B9B80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A6844326-E313-F10A-7E99-89F54C73774C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A6844326-E313-F10A-7E99-89F54C73774C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A6844326-E313-F10A-7E99-89F54C73774C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A6844326-E313-F10A-7E99-89F54C73774C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7CAB909-965B-8674-56F1-98F3BE0BD87A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C7CAB909-965B-8674-56F1-98F3BE0BD87A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7CAB909-965B-8674-56F1-98F3BE0BD87A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C7CAB909-965B-8674-56F1-98F3BE0BD87A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {24CB433D-438B-04D0-29F7-9F29EC7DC3C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {24CB433D-438B-04D0-29F7-9F29EC7DC3C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {24CB433D-438B-04D0-29F7-9F29EC7DC3C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {24CB433D-438B-04D0-29F7-9F29EC7DC3C6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9A98EE2B-BBBC-0D54-60D8-C36ABE80B340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9A98EE2B-BBBC-0D54-60D8-C36ABE80B340}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9A98EE2B-BBBC-0D54-60D8-C36ABE80B340}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9A98EE2B-BBBC-0D54-60D8-C36ABE80B340}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C5591759-58B0-73D0-6EDC-4FFCBE819303}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C5591759-58B0-73D0-6EDC-4FFCBE819303}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C5591759-58B0-73D0-6EDC-4FFCBE819303}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C5591759-58B0-73D0-6EDC-4FFCBE819303}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AD0837BE-7912-AEDF-BDA9-2D2E4FE0CE0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AD0837BE-7912-AEDF-BDA9-2D2E4FE0CE0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AD0837BE-7912-AEDF-BDA9-2D2E4FE0CE0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AD0837BE-7912-AEDF-BDA9-2D2E4FE0CE0B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DEE77B19-9559-D47D-8EC4-C207152A9C2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DEE77B19-9559-D47D-8EC4-C207152A9C2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DEE77B19-9559-D47D-8EC4-C207152A9C2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DEE77B19-9559-D47D-8EC4-C207152A9C2C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {93256CB0-F5C1-CF7B-1D19-307E6E01191B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {93256CB0-F5C1-CF7B-1D19-307E6E01191B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {93256CB0-F5C1-CF7B-1D19-307E6E01191B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {93256CB0-F5C1-CF7B-1D19-307E6E01191B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A4A3650E-164F-9339-FA7B-606EFFD06268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A4A3650E-164F-9339-FA7B-606EFFD06268}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A4A3650E-164F-9339-FA7B-606EFFD06268}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A4A3650E-164F-9339-FA7B-606EFFD06268}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0453D30-45FE-B2BC-5404-4A9C985D7BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B0453D30-45FE-B2BC-5404-4A9C985D7BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0453D30-45FE-B2BC-5404-4A9C985D7BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B0453D30-45FE-B2BC-5404-4A9C985D7BFF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34A07D0C-32E6-E19B-337E-4E6CB722C606}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {34A07D0C-32E6-E19B-337E-4E6CB722C606}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34A07D0C-32E6-E19B-337E-4E6CB722C606}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {34A07D0C-32E6-E19B-337E-4E6CB722C606}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FCE0046B-03F8-78F6-86A1-8DDCEE8F4C9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FCE0046B-03F8-78F6-86A1-8DDCEE8F4C9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FCE0046B-03F8-78F6-86A1-8DDCEE8F4C9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FCE0046B-03F8-78F6-86A1-8DDCEE8F4C9F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5DB3749D-E83C-7093-75B9-B617D1FB72C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5DB3749D-E83C-7093-75B9-B617D1FB72C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5DB3749D-E83C-7093-75B9-B617D1FB72C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5DB3749D-E83C-7093-75B9-B617D1FB72C0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DD05B30B-7C7D-CFF3-9C36-839D54A13B0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DD05B30B-7C7D-CFF3-9C36-839D54A13B0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DD05B30B-7C7D-CFF3-9C36-839D54A13B0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DD05B30B-7C7D-CFF3-9C36-839D54A13B0C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7BA618DE-0BC8-886C-36DD-989B9C05FA96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7BA618DE-0BC8-886C-36DD-989B9C05FA96}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7BA618DE-0BC8-886C-36DD-989B9C05FA96}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7BA618DE-0BC8-886C-36DD-989B9C05FA96}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8CE66034-25E2-8FF2-93A1-0BD3672AD86D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8CE66034-25E2-8FF2-93A1-0BD3672AD86D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8CE66034-25E2-8FF2-93A1-0BD3672AD86D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8CE66034-25E2-8FF2-93A1-0BD3672AD86D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3C4BCE69-B353-B5AA-E824-209A6D627BA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3C4BCE69-B353-B5AA-E824-209A6D627BA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3C4BCE69-B353-B5AA-E824-209A6D627BA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3C4BCE69-B353-B5AA-E824-209A6D627BA3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E11BAB8D-39ED-AC6C-6D69-1E5B5F3FB286}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E11BAB8D-39ED-AC6C-6D69-1E5B5F3FB286}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E11BAB8D-39ED-AC6C-6D69-1E5B5F3FB286}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E11BAB8D-39ED-AC6C-6D69-1E5B5F3FB286}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D21CCB70-1EDB-8D13-F00F-CA280DE4C83E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D21CCB70-1EDB-8D13-F00F-CA280DE4C83E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D21CCB70-1EDB-8D13-F00F-CA280DE4C83E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D21CCB70-1EDB-8D13-F00F-CA280DE4C83E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {801E5330-F8E0-CC40-CC9A-47FE42284871}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {801E5330-F8E0-CC40-CC9A-47FE42284871}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {801E5330-F8E0-CC40-CC9A-47FE42284871}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {801E5330-F8E0-CC40-CC9A-47FE42284871}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0A1267E9-52FF-B8DE-8522-802BE55F41DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0A1267E9-52FF-B8DE-8522-802BE55F41DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0A1267E9-52FF-B8DE-8522-802BE55F41DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0A1267E9-52FF-B8DE-8522-802BE55F41DA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4312B163-9507-6A25-893B-C18ECBF896BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4312B163-9507-6A25-893B-C18ECBF896BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4312B163-9507-6A25-893B-C18ECBF896BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4312B163-9507-6A25-893B-C18ECBF896BF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7005DD7B-D3B6-1360-313B-975974AA6254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7005DD7B-D3B6-1360-313B-975974AA6254}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7005DD7B-D3B6-1360-313B-975974AA6254}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7005DD7B-D3B6-1360-313B-975974AA6254}.Release|Any CPU.Build.0 = Release|Any CPU
+ {10E2810B-AEDC-AE32-911A-750DF29322F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {10E2810B-AEDC-AE32-911A-750DF29322F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {10E2810B-AEDC-AE32-911A-750DF29322F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {10E2810B-AEDC-AE32-911A-750DF29322F0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6A85289A-97BE-DC01-FB92-7FD258FCDDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6A85289A-97BE-DC01-FB92-7FD258FCDDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A85289A-97BE-DC01-FB92-7FD258FCDDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6A85289A-97BE-DC01-FB92-7FD258FCDDB7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {923E34BA-CA8A-971E-7FF7-51DD346394A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {923E34BA-CA8A-971E-7FF7-51DD346394A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {923E34BA-CA8A-971E-7FF7-51DD346394A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {923E34BA-CA8A-971E-7FF7-51DD346394A1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CBC75308-5C91-83F0-5472-39C9445C8FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CBC75308-5C91-83F0-5472-39C9445C8FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CBC75308-5C91-83F0-5472-39C9445C8FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CBC75308-5C91-83F0-5472-39C9445C8FFC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB08E86A-946F-C3BD-C607-989716B05D46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BB08E86A-946F-C3BD-C607-989716B05D46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB08E86A-946F-C3BD-C607-989716B05D46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BB08E86A-946F-C3BD-C607-989716B05D46}.Release|Any CPU.Build.0 = Release|Any CPU
+ {290ED315-ED26-F504-0583-848669298657}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {290ED315-ED26-F504-0583-848669298657}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {290ED315-ED26-F504-0583-848669298657}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {290ED315-ED26-F504-0583-848669298657}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E234FD18-B133-4CF4-2AC1-7E219BF54242}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E234FD18-B133-4CF4-2AC1-7E219BF54242}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E234FD18-B133-4CF4-2AC1-7E219BF54242}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E234FD18-B133-4CF4-2AC1-7E219BF54242}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8252A386-069A-0D7D-EAB4-B2E77833B443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8252A386-069A-0D7D-EAB4-B2E77833B443}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8252A386-069A-0D7D-EAB4-B2E77833B443}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8252A386-069A-0D7D-EAB4-B2E77833B443}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3F65D29D-ED95-2D6F-B927-47C5CF070AA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3F65D29D-ED95-2D6F-B927-47C5CF070AA5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3F65D29D-ED95-2D6F-B927-47C5CF070AA5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3F65D29D-ED95-2D6F-B927-47C5CF070AA5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEF66A04-80EF-F6FD-E969-F441F709ECDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BEF66A04-80EF-F6FD-E969-F441F709ECDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEF66A04-80EF-F6FD-E969-F441F709ECDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BEF66A04-80EF-F6FD-E969-F441F709ECDA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {612E7B7D-8BE1-C279-2BD9-6191A97F2D03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {612E7B7D-8BE1-C279-2BD9-6191A97F2D03}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {612E7B7D-8BE1-C279-2BD9-6191A97F2D03}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {612E7B7D-8BE1-C279-2BD9-6191A97F2D03}.Release|Any CPU.Build.0 = Release|Any CPU
+ {491BC06C-DEEC-0D65-985A-E192EC710BEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {491BC06C-DEEC-0D65-985A-E192EC710BEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {491BC06C-DEEC-0D65-985A-E192EC710BEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {491BC06C-DEEC-0D65-985A-E192EC710BEF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E297099A-564C-A98A-BED5-547AD4799C81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E297099A-564C-A98A-BED5-547AD4799C81}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E297099A-564C-A98A-BED5-547AD4799C81}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E297099A-564C-A98A-BED5-547AD4799C81}.Release|Any CPU.Build.0 = Release|Any CPU
+ {839F00DC-B547-E6C3-AB0B-EFABD62C5C82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {839F00DC-B547-E6C3-AB0B-EFABD62C5C82}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {839F00DC-B547-E6C3-AB0B-EFABD62C5C82}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {839F00DC-B547-E6C3-AB0B-EFABD62C5C82}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5F15CE31-9DF5-CD0F-F998-8BF358F11752}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5F15CE31-9DF5-CD0F-F998-8BF358F11752}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5F15CE31-9DF5-CD0F-F998-8BF358F11752}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5F15CE31-9DF5-CD0F-F998-8BF358F11752}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B2C73083-9F69-D41B-572D-050157413338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B2C73083-9F69-D41B-572D-050157413338}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B2C73083-9F69-D41B-572D-050157413338}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B2C73083-9F69-D41B-572D-050157413338}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E27FA26C-6E34-F3F5-3005-67EF18A5CB8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E27FA26C-6E34-F3F5-3005-67EF18A5CB8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E27FA26C-6E34-F3F5-3005-67EF18A5CB8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E27FA26C-6E34-F3F5-3005-67EF18A5CB8B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {295E850B-D94D-3328-75AB-62828B4B85BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {295E850B-D94D-3328-75AB-62828B4B85BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {295E850B-D94D-3328-75AB-62828B4B85BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {295E850B-D94D-3328-75AB-62828B4B85BA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A8C385EE-1798-2802-5533-9E9A12CC603E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A8C385EE-1798-2802-5533-9E9A12CC603E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A8C385EE-1798-2802-5533-9E9A12CC603E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A8C385EE-1798-2802-5533-9E9A12CC603E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A1EBC0BC-D378-B9B7-7A57-EF7DF11E3ED7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A1EBC0BC-D378-B9B7-7A57-EF7DF11E3ED7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A1EBC0BC-D378-B9B7-7A57-EF7DF11E3ED7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A1EBC0BC-D378-B9B7-7A57-EF7DF11E3ED7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {29080628-23A6-1DCB-F15E-93F1D1682CC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {29080628-23A6-1DCB-F15E-93F1D1682CC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {29080628-23A6-1DCB-F15E-93F1D1682CC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {29080628-23A6-1DCB-F15E-93F1D1682CC1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {31EB654C-B562-73B4-2456-78FA875515D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {31EB654C-B562-73B4-2456-78FA875515D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {31EB654C-B562-73B4-2456-78FA875515D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {31EB654C-B562-73B4-2456-78FA875515D2}.Release|Any CPU.Build.0 = Release|Any CPU
{068CD9AA-CEC3-CA68-1BAB-2B1B9FD711D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{068CD9AA-CEC3-CA68-1BAB-2B1B9FD711D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{068CD9AA-CEC3-CA68-1BAB-2B1B9FD711D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -1702,6 +2062,77 @@ Global
{BD974609-C68B-4BE6-9682-EB132462B50D} = {C2D1346B-9665-4150-B644-075CF1636BAA}
{A8D5CFFA-7F9E-C35B-4F19-D63F6EC1D5CA} = {C2D1346B-9665-4150-B644-075CF1636BAA}
{9EB058F3-10C9-8F3F-AD9E-72CB362A0928} = {5880FECB-91F1-4AB8-8726-75EAFA8A918E}
+ {8087BDE4-6707-05A5-5F84-DFE6628E8EC8} = {6FE0875A-E178-4766-BCC6-87D37F273102}
+ {B095320B-6854-EBEC-98DB-26E06D97183A} = {6FE0875A-E178-4766-BCC6-87D37F273102}
+ {451EC146-D85B-EA72-D064-0A75E9F52C7F} = {6FE0875A-E178-4766-BCC6-87D37F273102}
+ {6FE0875A-E178-4766-BCC6-87D37F273102} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {2C3B6892-A23A-9A8F-431E-30869231F832} = {6FE0875A-E178-4766-BCC6-87D37F273102}
+ {DE29FFE1-ABB8-3B45-0D58-768727CA8DB1} = {6FE0875A-E178-4766-BCC6-87D37F273102}
+ {CE7C15D3-3B1B-84CF-1B4B-DA45533E9E83} = {0AD92ED3-387B-4975-BA2E-68A76E727959}
+ {0AD92ED3-387B-4975-BA2E-68A76E727959} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {6167C216-0C39-EBBA-2841-A8F864642DF1} = {0AD92ED3-387B-4975-BA2E-68A76E727959}
+ {B3AADD0B-E103-A0F9-385F-1D18262B9C41} = {0AD92ED3-387B-4975-BA2E-68A76E727959}
+ {E8D25897-E52E-47DE-B3B8-CE916C9B9B80} = {0AD92ED3-387B-4975-BA2E-68A76E727959}
+ {A6844326-E313-F10A-7E99-89F54C73774C} = {76B913A2-E33D-4C48-B206-8F14F0F94B06}
+ {76B913A2-E33D-4C48-B206-8F14F0F94B06} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {C7CAB909-965B-8674-56F1-98F3BE0BD87A} = {76B913A2-E33D-4C48-B206-8F14F0F94B06}
+ {24CB433D-438B-04D0-29F7-9F29EC7DC3C6} = {76B913A2-E33D-4C48-B206-8F14F0F94B06}
+ {9A98EE2B-BBBC-0D54-60D8-C36ABE80B340} = {76B913A2-E33D-4C48-B206-8F14F0F94B06}
+ {C5591759-58B0-73D0-6EDC-4FFCBE819303} = {76B913A2-E33D-4C48-B206-8F14F0F94B06}
+ {AD0837BE-7912-AEDF-BDA9-2D2E4FE0CE0B} = {56053920-5095-430D-9C8B-AFB2C40407B4}
+ {56053920-5095-430D-9C8B-AFB2C40407B4} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {DEE77B19-9559-D47D-8EC4-C207152A9C2C} = {56053920-5095-430D-9C8B-AFB2C40407B4}
+ {93256CB0-F5C1-CF7B-1D19-307E6E01191B} = {56053920-5095-430D-9C8B-AFB2C40407B4}
+ {A4A3650E-164F-9339-FA7B-606EFFD06268} = {56053920-5095-430D-9C8B-AFB2C40407B4}
+ {B0453D30-45FE-B2BC-5404-4A9C985D7BFF} = {56053920-5095-430D-9C8B-AFB2C40407B4}
+ {08735294-3E6B-4420-9916-E7B8C4EB874D} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {BE5FE32C-DA73-4EC5-809E-E11B05ACA398} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {FCB56CBA-FA35-46A8-86B7-BAE5433197D9} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {68528C1C-B163-49A6-A19D-24E10F500F90} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {3055F932-0D1E-4823-A03A-7B62C7639BDA} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {4C362C30-C4B1-4C4B-A545-DBF67C7E9153} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {9C4BC501-C0A6-4130-BA68-EF5FB0C640B0} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {0DDCFE67-7D4E-4709-9882-EC032A031789} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {34A07D0C-32E6-E19B-337E-4E6CB722C606} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {FCE0046B-03F8-78F6-86A1-8DDCEE8F4C9F} = {616B9154-1EE8-45AE-9299-EBD0D51446E5}
+ {616B9154-1EE8-45AE-9299-EBD0D51446E5} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {5DB3749D-E83C-7093-75B9-B617D1FB72C0} = {616B9154-1EE8-45AE-9299-EBD0D51446E5}
+ {DD05B30B-7C7D-CFF3-9C36-839D54A13B0C} = {616B9154-1EE8-45AE-9299-EBD0D51446E5}
+ {7BA618DE-0BC8-886C-36DD-989B9C05FA96} = {616B9154-1EE8-45AE-9299-EBD0D51446E5}
+ {8CE66034-25E2-8FF2-93A1-0BD3672AD86D} = {FBF49D7B-F60C-41B5-8CEF-F1D41F84A387}
+ {FBF49D7B-F60C-41B5-8CEF-F1D41F84A387} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {3C4BCE69-B353-B5AA-E824-209A6D627BA3} = {FBF49D7B-F60C-41B5-8CEF-F1D41F84A387}
+ {E11BAB8D-39ED-AC6C-6D69-1E5B5F3FB286} = {FBF49D7B-F60C-41B5-8CEF-F1D41F84A387}
+ {D21CCB70-1EDB-8D13-F00F-CA280DE4C83E} = {FBF49D7B-F60C-41B5-8CEF-F1D41F84A387}
+ {801E5330-F8E0-CC40-CC9A-47FE42284871} = {FBF49D7B-F60C-41B5-8CEF-F1D41F84A387}
+ {0A1267E9-52FF-B8DE-8522-802BE55F41DA} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {4312B163-9507-6A25-893B-C18ECBF896BF} = {482C1FC7-4FD6-4381-8078-73BEBFAF4349}
+ {7005DD7B-D3B6-1360-313B-975974AA6254} = {482C1FC7-4FD6-4381-8078-73BEBFAF4349}
+ {10E2810B-AEDC-AE32-911A-750DF29322F0} = {482C1FC7-4FD6-4381-8078-73BEBFAF4349}
+ {6A85289A-97BE-DC01-FB92-7FD258FCDDB7} = {482C1FC7-4FD6-4381-8078-73BEBFAF4349}
+ {482C1FC7-4FD6-4381-8078-73BEBFAF4349} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {923E34BA-CA8A-971E-7FF7-51DD346394A1} = {A4E65246-D2F6-492F-8BD5-FE11DD89A19B}
+ {A4E65246-D2F6-492F-8BD5-FE11DD89A19B} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {CBC75308-5C91-83F0-5472-39C9445C8FFC} = {A4E65246-D2F6-492F-8BD5-FE11DD89A19B}
+ {BB08E86A-946F-C3BD-C607-989716B05D46} = {A4E65246-D2F6-492F-8BD5-FE11DD89A19B}
+ {290ED315-ED26-F504-0583-848669298657} = {A4E65246-D2F6-492F-8BD5-FE11DD89A19B}
+ {E234FD18-B133-4CF4-2AC1-7E219BF54242} = {A4E65246-D2F6-492F-8BD5-FE11DD89A19B}
+ {8252A386-069A-0D7D-EAB4-B2E77833B443} = {482C1FC7-4FD6-4381-8078-73BEBFAF4349}
+ {3F65D29D-ED95-2D6F-B927-47C5CF070AA5} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
+ {7F040742-3C10-406A-A0FF-7FE621DEF671} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {BEF66A04-80EF-F6FD-E969-F441F709ECDA} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {612E7B7D-8BE1-C279-2BD9-6191A97F2D03} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {491BC06C-DEEC-0D65-985A-E192EC710BEF} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {E297099A-564C-A98A-BED5-547AD4799C81} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {839F00DC-B547-E6C3-AB0B-EFABD62C5C82} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {5F15CE31-9DF5-CD0F-F998-8BF358F11752} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {B2C73083-9F69-D41B-572D-050157413338} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {E27FA26C-6E34-F3F5-3005-67EF18A5CB8B} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {295E850B-D94D-3328-75AB-62828B4B85BA} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {A8C385EE-1798-2802-5533-9E9A12CC603E} = {7F040742-3C10-406A-A0FF-7FE621DEF671}
+ {A1EBC0BC-D378-B9B7-7A57-EF7DF11E3ED7} = {482C1FC7-4FD6-4381-8078-73BEBFAF4349}
+ {29080628-23A6-1DCB-F15E-93F1D1682CC1} = {482C1FC7-4FD6-4381-8078-73BEBFAF4349}
+ {31EB654C-B562-73B4-2456-78FA875515D2} = {0DDCFE67-7D4E-4709-9882-EC032A031789}
{068CD9AA-CEC3-CA68-1BAB-2B1B9FD711D3} = {8977A560-45C2-4EC2-A849-97335B382C74}
{4853A78A-4EC4-4D86-9F02-D0DDEAE85520} = {8977A560-45C2-4EC2-A849-97335B382C74}
{D5A8E20C-E8D2-4A57-906A-263994D8731D} = {8977A560-45C2-4EC2-A849-97335B382C74}
@@ -1715,6 +2146,9 @@ Global
src\Compilers\CSharp\csc\CscCommandLine.projitems*{0161e25c-918a-4dc8-9648-30fdcc8e31e9}*SharedItemsImports = 5
src\Tools\ExternalAccess\Razor\Shared\Microsoft.CodeAnalysis.ExternalAccess.Razor.Shared.projitems*{068cd9aa-cec3-ca68-1bab-2b1b9fd711d3}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{0c2e1633-1462-4712-88f4-a0c945bad3a8}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{08735294-3e6b-4420-9916-e7b8c4eb874d}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{0a1267e9-52ff-b8de-8522-802be55f41da}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis.Utilities.projitems*{0a1267e9-52ff-b8de-8522-802be55f41da}*SharedItemsImports = 5
src\Analyzers\Core\CodeFixes\CodeFixes.projitems*{1b6c4a1a-413b-41fb-9f85-5c09118e541b}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 5
src\Dependencies\CodeAnalysis.Debugging\Microsoft.CodeAnalysis.Debugging.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 5
@@ -1723,6 +2157,7 @@ Global
src\Dependencies\PooledObjects\Microsoft.CodeAnalysis.PooledObjects.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\CSharpCompilerExtensions.projitems*{21b239d0-d144-430f-a394-c066d58ee267}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CSharpWorkspaceExtensions.projitems*{21b239d0-d144-430f-a394-c066d58ee267}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{24cb433d-438b-04d0-29f7-9f29ec7dc3c6}*SharedItemsImports = 5
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 5
src\Analyzers\VisualBasic\Analyzers\VisualBasicAnalyzers.projitems*{2531a8c4-97dd-47bc-a79c-b7846051e137}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\VisualBasicCompilerExtensions.projitems*{2531a8c4-97dd-47bc-a79c-b7846051e137}*SharedItemsImports = 5
@@ -1736,15 +2171,19 @@ Global
src\Dependencies\Threading\Microsoft.CodeAnalysis.Threading.projitems*{275812ee-dedb-4232-9439-91c9757d2ae4}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\CompilerExtensions.projitems*{275812ee-dedb-4232-9439-91c9757d2ae4}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{2801f82b-78ce-4bae-b06f-537574751e2e}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Refactoring.CSharp\Refactoring.CSharp.Utilities.projitems*{3055f932-0d1e-4823-a03a-7b62c7639bda}*SharedItemsImports = 13
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{3140fe61-0856-4367-9aa3-8081b9a80e35}*SharedItemsImports = 13
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{3140fe61-0856-4367-9aa3-8081b9a80e36}*SharedItemsImports = 13
src\Analyzers\CSharp\Analyzers\CSharpAnalyzers.projitems*{3973b09a-4fbf-44a5-8359-3d22ceb71f71}*SharedItemsImports = 5
src\Analyzers\CSharp\CodeFixes\CSharpCodeFixes.projitems*{3973b09a-4fbf-44a5-8359-3d22ceb71f71}*SharedItemsImports = 5
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{3973b09a-4fbf-44a5-8359-3d22ceb71f71}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{41ed1bfa-fdad-4fe4-8118-db23fb49b0b0}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{3f65d29d-ed95-2d6f-b927-47c5cf070aa5}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{3f65d29d-ed95-2d6f-b927-47c5cf070aa5}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CSharpWorkspaceExtensions.projitems*{438db8af-f3f0-4ed9-80b5-13fddd5b8787}*SharedItemsImports = 13
src\Tools\ExternalAccess\Razor\Shared\Microsoft.CodeAnalysis.ExternalAccess.Razor.Shared.projitems*{4853a78a-4ec4-4d86-9f02-d0ddeae85520}*SharedItemsImports = 13
src\Compilers\CSharp\csc\CscCommandLine.projitems*{4b45ca0c-03a0-400f-b454-3d4bcb16af38}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Refactoring.VisualBasic\Refactoring.VisualBasic.Utilities.projitems*{4c362c30-c4b1-4c4b-a545-dbf67c7e9153}*SharedItemsImports = 13
src\Analyzers\CSharp\Tests\CSharpAnalyzers.UnitTests.projitems*{5018d049-5870-465a-889b-c742ce1e31cb}*SharedItemsImports = 5
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{54e08bf5-f819-404f-a18d-0ab9ea81ea04}*SharedItemsImports = 13
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\VisualBasicCompilerExtensions.projitems*{57ca988d-f010-4bf2-9a2e-07d6dcd2ff2c}*SharedItemsImports = 5
@@ -1759,34 +2198,51 @@ Global
src\Analyzers\Core\CodeFixes\CodeFixes.projitems*{5ff1e493-69cc-4d0b-83f2-039f469a04e1}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\WorkspaceExtensions.projitems*{5ff1e493-69cc-4d0b-83f2-039f469a04e1}*SharedItemsImports = 5
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{60db272a-21c9-4e8d-9803-ff4e132392c8}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{6167c216-0c39-ebba-2841-a8f864642df1}*SharedItemsImports = 5
src\LanguageServer\Microsoft.CommonLanguageServerProtocol.Framework\Microsoft.CommonLanguageServerProtocol.Framework.Shared.projitems*{64eaded3-4b5d-4431-bbe5-a4aba1c38c00}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Refactoring\Refactoring.Utilities.projitems*{68528c1c-b163-49a6-a19d-24e10f500f90}*SharedItemsImports = 13
src\LanguageServer\Microsoft.CommonLanguageServerProtocol.Framework\Microsoft.CommonLanguageServerProtocol.Framework.Shared.projitems*{686bf57e-a6ff-467b-aab3-44de916a9772}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\CSharpCompilerExtensions.projitems*{699fea05-aea7-403d-827e-53cf4e826955}*SharedItemsImports = 13
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{6fc8e6f5-659c-424d-aeb5-331b95883e29}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{7005dd7b-d3b6-1360-313b-975974aa6254}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{7005dd7b-d3b6-1360-313b-975974aa6254}*SharedItemsImports = 5
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{76242a2d-2600-49dd-8c15-fea07ecb1843}*SharedItemsImports = 5
src\Analyzers\Core\Analyzers\Analyzers.projitems*{76e96966-4780-4040-8197-bde2879516f4}*SharedItemsImports = 13
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{7ad4fe65-9a30-41a6-8004-aa8f89bcb7f3}*SharedItemsImports = 5
src\Analyzers\VisualBasic\Tests\VisualBasicAnalyzers.UnitTests.projitems*{7b7f4153-ae93-4908-b8f0-430871589f83}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{8087bde4-6707-05a5-5f84-dfe6628e8ec8}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{8087bde4-6707-05a5-5f84-dfe6628e8ec8}*SharedItemsImports = 5
src\Compilers\VisualBasic\vbc\VbcCommandLine.projitems*{810b02ad-2ea5-4422-88ac-b71b8ab0df0b}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{8252a386-069a-0d7d-eab4-b2e77833b443}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{8252a386-069a-0d7d-eab4-b2e77833b443}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{8ce66034-25e2-8ff2-93a1-0bd3672ad86d}*SharedItemsImports = 5
src\Dependencies\Collections\Microsoft.CodeAnalysis.Collections.projitems*{8e2a252e-a140-45a6-a81a-2652996ea589}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{8e2a252e-a140-45a6-a81a-2652996ea589}*SharedItemsImports = 5
src\Dependencies\Threading\Microsoft.CodeAnalysis.Threading.projitems*{8e2a252e-a140-45a6-a81a-2652996ea589}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{923e34ba-ca8a-971e-7ff7-51dd346394a1}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{923e34ba-ca8a-971e-7ff7-51dd346394a1}*SharedItemsImports = 5
src\Analyzers\VisualBasic\Analyzers\VisualBasicAnalyzers.projitems*{94faf461-2e74-4dbb-9813-6b2cde6f1880}*SharedItemsImports = 13
src\Compilers\Server\VBCSCompiler\VBCSCompilerCommandLine.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 5
src\Dependencies\Threading\Microsoft.CodeAnalysis.Threading.projitems*{967723e8-4fdd-447b-99f6-4f8c47cb5433}*SharedItemsImports = 13
src\Compilers\VisualBasic\vbc\VbcCommandLine.projitems*{975cd834-45f4-4ea0-a395-cb60dbd0e214}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\WorkspaceExtensions.projitems*{99f594b1-3916-471d-a761-a6731fc50e9a}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{9c4bc501-c0a6-4130-ba68-ef5fb0c640b0}*SharedItemsImports = 13
src\Analyzers\VisualBasic\CodeFixes\VisualBasicCodeFixes.projitems*{9f9ccc78-7487-4127-9d46-db23e501f001}*SharedItemsImports = 13
src\Analyzers\CSharp\CodeFixes\CSharpCodeFixes.projitems*{a07abcf5-bc43-4ee9-8fd8-b2d77fd54d73}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CSharpWorkspaceExtensions.projitems*{a07abcf5-bc43-4ee9-8fd8-b2d77fd54d73}*SharedItemsImports = 5
src\Analyzers\VisualBasic\Analyzers\VisualBasicAnalyzers.projitems*{a1bcd0ce-6c2f-4f8c-9a48-d9d93928e26d}*SharedItemsImports = 5
src\Analyzers\VisualBasic\CodeFixes\VisualBasicCodeFixes.projitems*{a1bcd0ce-6c2f-4f8c-9a48-d9d93928e26d}*SharedItemsImports = 5
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{a1bcd0ce-6c2f-4f8c-9a48-d9d93928e26d}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Refactoring.VisualBasic\Refactoring.VisualBasic.Utilities.projitems*{a4a3650e-164f-9339-fa7b-606effd06268}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{a6844326-e313-f10a-7e99-89f54c73774c}*SharedItemsImports = 5
src\Analyzers\CSharp\Analyzers\CSharpAnalyzers.projitems*{aa87bfed-089a-4096-b8d5-690bdc7d5b24}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\CSharpCompilerExtensions.projitems*{aa87bfed-089a-4096-b8d5-690bdc7d5b24}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{abdbac1e-350e-4dc3-bb45-3504404545ee}*SharedItemsImports = 5
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{abdbac1e-350e-4dc3-bb45-3504404545ee}*SharedItemsImports = 5
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{ace53515-482c-4c6a-e2d2-4242a687dfee}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{ad0837be-7912-aedf-bda9-2d2e4fe0ce0b}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Refactoring\Refactoring.Utilities.projitems*{ad0837be-7912-aedf-bda9-2d2e4fe0ce0b}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Workspaces\Workspaces.Utilities.projitems*{ad0837be-7912-aedf-bda9-2d2e4fe0ce0b}*SharedItemsImports = 5
src\Compilers\CSharp\csc\CscCommandLine.projitems*{b021ccbc-b2af-4560-af28-ed055f0ed696}*SharedItemsImports = 13
src\Dependencies\Collections\Microsoft.CodeAnalysis.Collections.projitems*{b1481d94-682e-46ec-adbe-a16eb46feee9}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{b1481d94-682e-46ec-adbe-a16eb46feee9}*SharedItemsImports = 5
@@ -1795,8 +2251,10 @@ Global
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{bb3ca047-5d00-48d4-b7d3-233c1265c065}*SharedItemsImports = 13
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{bd9539eb-aa5e-4e67-ac7f-97d7cbc4d0c9}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{bd974609-c68b-4be6-9682-eb132462b50d}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Compiler.CSharp\Analyzer.CSharp.Utilities.projitems*{be5fe32c-da73-4ec5-809e-e11b05aca398}*SharedItemsImports = 13
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{bf9dac1e-3a5e-4dc3-bb44-9a64e0d4e9d4}*SharedItemsImports = 5
src\Dependencies\PooledObjects\Microsoft.CodeAnalysis.PooledObjects.projitems*{c1930979-c824-496b-a630-70f5369a636f}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{ce7c15d3-3b1b-84cf-1b4b-da45533e9e83}*SharedItemsImports = 5
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\VisualBasicCompilerExtensions.projitems*{cec0dce7-8d52-45c3-9295-fc7b16bd2451}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{d2589bce-4f2e-4113-b7e7-37392c0c5492}*SharedItemsImports = 5
@@ -1806,6 +2264,7 @@ Global
src\Analyzers\CSharp\CodeFixes\CSharpCodeFixes.projitems*{da973826-c985-4128-9948-0b445e638bdb}*SharedItemsImports = 13
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{db96c25f-39a9-4a6a-92bc-d1e42717308f}*SharedItemsImports = 5
src\Compilers\Server\VBCSCompiler\VBCSCompilerCommandLine.projitems*{dc8c78cc-b6fe-47bf-93b1-b65a1c67c08d}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\Refactoring.CSharp\Refactoring.CSharp.Utilities.projitems*{dee77b19-9559-d47d-8ec4-c207152a9c2c}*SharedItemsImports = 5
src\Analyzers\VisualBasic\Tests\VisualBasicAnalyzers.UnitTests.projitems*{e512c6c1-f085-4ad7-b0d9-e8f1a0a2a510}*SharedItemsImports = 5
src\Compilers\VisualBasic\vbc\VbcCommandLine.projitems*{e58ee9d7-1239-4961-a0c1-f9ec3952c4c1}*SharedItemsImports = 5
src\Analyzers\CSharp\Tests\CSharpAnalyzers.UnitTests.projitems*{e645b517-5766-46fb-aa4a-d4d30c9e3be6}*SharedItemsImports = 5
@@ -1821,5 +2280,7 @@ Global
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{fa0e905d-ec46-466d-b7b2-3b5557f9428c}*SharedItemsImports = 5
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{fa0e905d-ec46-466d-b7b2-3b5557f9428c}*SharedItemsImports = 5
src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{fce88bbd-9bbd-4871-b9b0-de176d73a6b0}*SharedItemsImports = 5
+ src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis.Utilities.projitems*{fcb56cba-fa35-46a8-86b7-bae5433197d9}*SharedItemsImports = 13
+ src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{fce0046b-03f8-78f6-86a1-8ddcee8f4c9f}*SharedItemsImports = 5
EndGlobalSection
EndGlobal
diff --git a/docs/analyzers/FixAllProvider.md b/docs/analyzers/FixAllProvider.md
index c6b947950fb72..98548349e887a 100644
--- a/docs/analyzers/FixAllProvider.md
+++ b/docs/analyzers/FixAllProvider.md
@@ -1,120 +1,120 @@
-Introduction
-============
+# Introduction
This document covers the following:
- - Introductory definitions
- - What is a FixAll occurrences code fix?
- - How is a FixAll occurrences code fix computed?
- - Adding FixAll support to your code fixer
- - Selecting an Equivalence key for code actions
- - Spectrum of FixAll providers
- - Built-in FixAllProvider and its limitations
- - Implementing a custom FixAllProvider
-
-Definitions
-===========
-
- - **Analyzer:** An instance of a type derived from `DiagnosticAnalyzer` that reports diagnostics.
- - **Code fixer:** An instance of a type derived from `CodeFixProvider` that provides code fixes for compiler and/or analyzer diagnostics.
- - **Code refactoring:** An instance of a type derived from `CodeRefactoringProvider` that provides source code refactorings.
- - **Code action:** An action registered by `CodeFixProvider.RegisterCodeFixesAsync` that performs a code fix OR an action registered by `CodeRefactoringProvider.ComputeRefactoringsAsync` that performs a code refactoring.
- - **Equivalence Key:** A string value representing an equivalence class of all code actions registered by a code fixer or refactoring. Two code actions are treated as equivalent if they have equal `EquivalenceKey` values and were generated by the same code fixer or refactoring.
- - **FixAll provider:** An instance of a type derived from `FixAllProvider` that provides a FixAll occurrences code fix. A FixAll provider is associated with a corresponding code fixer by `CodeFixProvider.GetFixAllProvider` method.
- - **FixAll occurrences code fix:** A code action returned by `FixAllProvider.GetFixAsync`, that fixes all or multiple occurrences of diagnostics fixed by the corresponding code fixer, within a given `FixAllScope`.
-
-What is a FixAll occurrences code fix?
-======================================
+
+- Introductory definitions
+- What is a FixAll occurrences code fix?
+- How is a FixAll occurrences code fix computed?
+- Adding FixAll support to your code fixer
+- Selecting an Equivalence key for code actions
+- Spectrum of FixAll providers
+- Built-in FixAllProvider and its limitations
+- Implementing a custom FixAllProvider
+
+# Definitions
+
+- **Analyzer:** An instance of a type derived from `DiagnosticAnalyzer` that reports diagnostics.
+- **Code fixer:** An instance of a type derived from `CodeFixProvider` that provides code fixes for compiler and/or analyzer diagnostics.
+- **Code refactoring:** An instance of a type derived from `CodeRefactoringProvider` that provides source code refactorings.
+- **Code action:** An action registered by `CodeFixProvider.RegisterCodeFixesAsync` that performs a code fix OR an action registered by `CodeRefactoringProvider.ComputeRefactoringsAsync` that performs a code refactoring.
+- **Equivalence Key:** A string value representing an equivalence class of all code actions registered by a code fixer or refactoring. Two code actions are treated as equivalent if they have equal `EquivalenceKey` values and were generated by the same code fixer or refactoring.
+- **FixAll provider:** An instance of a type derived from `FixAllProvider` that provides a FixAll occurrences code fix. A FixAll provider is associated with a corresponding code fixer by `CodeFixProvider.GetFixAllProvider` method.
+- **FixAll occurrences code fix:** A code action returned by `FixAllProvider.GetFixAsync`, that fixes all or multiple occurrences of diagnostics fixed by the corresponding code fixer, within a given `FixAllScope`.
+
+# What is a FixAll occurrences code fix?
In layman terms, a FixAll occurrences code fix means: I have a code fix 'C', that fixes a specific instance of diagnostic 'D' in my source and I want to apply this fix to all instances of 'D' across a broader scope, such as a document or a project or the entire solution.
In more technical terms: Given a particular code action registered by a code fixer to fix one or more diagnostics, a corresponding code action registered by its FixAll provider, that applies the original trigger code action across a broader scope (such as a document/project/solution) to fix multiple instances of such diagnostics.
-How is a FixAll occurrences code fix computed?
-==============================================
+# How is a FixAll occurrences code fix computed?
Following steps are used to compute a FixAll occurrences code fix:
- - Given a specific instance of a diagnostic, compute the set of code actions that claim to fix the diagnostic.
- - Select a specific code action from this set. In the Visual Studio IDE, this is done by selecting a specific code action in the light bulb menu.
- - The equivalence key of the selected code action represents the class of code actions that must be applied as part of a FixAll occurrences code fix.
- - Given this code action, get the FixAll provider corresponding to the code fixer that registered this code action.
- - If non-null, then request the FixAll provider for its supported FixAllScopes.
- - Select a specific `FixAllScope` from this set. In the Visual Studio IDE, this is done by clicking on the scope hyperlink in the preview dialog.
- - Given the trigger diagnostic(s), the equivalence key of the trigger code action, and the FixAll scope, invoke `FixAllProvider.GetFixAsync` to compute the FixAll occurrences code fix.
-Adding FixAll support to your code fixer
-========================================
+- Given a specific instance of a diagnostic, compute the set of code actions that claim to fix the diagnostic.
+- Select a specific code action from this set. In the Visual Studio IDE, this is done by selecting a specific code action in the light bulb menu.
+- The equivalence key of the selected code action represents the class of code actions that must be applied as part of a FixAll occurrences code fix.
+- Given this code action, get the FixAll provider corresponding to the code fixer that registered this code action.
+- If non-null, then request the FixAll provider for its supported FixAllScopes.
+- Select a specific `FixAllScope` from this set. In the Visual Studio IDE, this is done by clicking on the scope hyperlink in the preview dialog.
+- Given the trigger diagnostic(s), the equivalence key of the trigger code action, and the FixAll scope, invoke `FixAllProvider.GetFixAsync` to compute the FixAll occurrences code fix.
+
+# Adding FixAll support to your code fixer
Follow the below steps to add FixAll support to your code fixer:
- - Override the `CodeFixProvider.GetFixAllProvider` method and return a non-null instance of a `FixAllProvider`. You may either use our built-in FixAllProvider or implement a custom FixAllProvider. See the following sections in this document for determining the correct approach for your fixer.
- - Ensure that all the code actions registered by your code fixer have a non-null equivalence key. See the following section to determine how to select an equivalence key.
-Selecting an Equivalence key for code actions
-=============================================
+- Override the `CodeFixProvider.GetFixAllProvider` method and return a non-null instance of a `FixAllProvider`. You may either use our built-in FixAllProvider or implement a custom FixAllProvider. See the following sections in this document for determining the correct approach for your fixer.
+- Ensure that all the code actions registered by your code fixer have a non-null equivalence key. See the following section to determine how to select an equivalence key.
+
+# Selecting an Equivalence key for code actions
Each unique equivalence key for a code fixer defines a unique equivalence class of code actions. Equivalence key of the trigger code action is part of the `FixAllContext` and is used to determine the FixAll occurrences code fix.
Normally, you can use the **'title'** of the code action as the equivalence key. However, there are cases where you may desire to have different values. Let us take an example to get a better understanding.
Let us consider the [C# SimplifyTypeNamesCodeFixProvider](https://github.com/dotnet/roslyn/blob/main/src/Features/CSharp/Portable/SimplifyTypeNames/SimplifyTypeNamesCodeFixProvider.cs) that registers multiple code actions and also has FixAll support. This code fixer offers fixes to simplify the following expressions:
- - `this` expressions of the form 'this.x' to 'x'.
- - Qualified type names of the form 'A.B' to 'B'.
- - Member access expressions of the form 'A.M' to 'M'.
+
+- `this` expressions of the form 'this.x' to 'x'.
+- Qualified type names of the form 'A.B' to 'B'.
+- Member access expressions of the form 'A.M' to 'M'.
This fixer needs the following semantics for the corresponding FixAll occurrences code fixes:
- - `this` expression simplification: Fix all should simplify all this expressions, regardless of the member being accessed (this.x, this.y, this.z, etc.).
- - Qualified type name simplification: Fix all should simplify all qualified type names 'A.B' to 'B'. However, we don't want to simplify **all** qualified type names, such as 'C.D', 'E.F', etc. as that would be too generic a fix, which is not likely intended by the user.
- - Member access expressions: Fix all should simplify all member access expressions 'A.M' to 'M'.
+
+- `this` expression simplification: Fix all should simplify all this expressions, regardless of the member being accessed (this.x, this.y, this.z, etc.).
+- Qualified type name simplification: Fix all should simplify all qualified type names 'A.B' to 'B'. However, we don't want to simplify **all** qualified type names, such as 'C.D', 'E.F', etc. as that would be too generic a fix, which is not likely intended by the user.
+- Member access expressions: Fix all should simplify all member access expressions 'A.M' to 'M'.
It uses the below equivalence keys for its registered code actions to get the desired FixAll behavior:
- - `this` expression simplification: Generic resource string "Simplify this expression", which explicitly excludes the contents of the node being simplified.
- - Qualified type name simplification: Formatted resource string "Simplify type name A.B", which explicitly includes the contents of the node being simplified.
- - Member access expressions: Formatted resource string "Simplify type name A.M", which explicitly includes the contents of the node being simplified.
+
+- `this` expression simplification: Generic resource string "Simplify this expression", which explicitly excludes the contents of the node being simplified.
+- Qualified type name simplification: Formatted resource string "Simplify type name A.B", which explicitly includes the contents of the node being simplified.
+- Member access expressions: Formatted resource string "Simplify type name A.M", which explicitly includes the contents of the node being simplified.
Note that '`this` expression simplification' fix requires a different kind of an equivalence class from the other two simplifications. See method [GetCodeActionId](https://github.com/dotnet/roslyn/blob/main/src/Features/Core/Portable/ImplementAbstractClass/AbstractImplementAbstractClassCodeFixProvider.cs) for the actual implementation.
To summarize, use the equivalence key that best suits the category of fixes to be applied as part of a FixAll operation.
-Spectrum of FixAll providers
-============================
+# Spectrum of FixAll providers
When multiple fixes need to be applied to documents, there are various ways to do it:
+
- **Sequential approach**: One way to do it is to compute diagnostics, pick one, ask a fixer to produce a code action to fix that, apply it. Now for the resulting new compilation, recompute diagnostics, pick the next one and repeat the process. This approach would be very slow but would lead to correct results (unless it doesn't converge where one fix introduces a diagnostic that was just fixed by a previous fix). We chose to not implement this approach.
- **Batch fix approach**: Another way is to compute all the diagnostics, pick each diagnostic and give it to a fixer and apply it to produce a new solution. If there were 'n' diagnostics, there would be 'n' new solutions. Now just merge them all together in one go. This may produce incorrect results (when different fixes change the same region of code in different ways) but it is very fast. We have one implementation of this approach in `WellKnownFixAllProviders.BatchFixer`
- **Custom approach**: Depending on the fix, there may be a custom solution to fix multiple issues. For example, consider an analyzer that simply needs to generate one file as the fix for any instance of the issue. Instead of generating the same file over and over using the previous two approaches, one could write a custom `FixAllProvider` that simply generates the file once if there were any diagnostics at all.
Since there are various ways of fixing all issues, we've implemented a framework and provided the one general implementation that we think is useful in many cases.
-Built-in FixAllProvider
-=======================
+# Built-in FixAllProvider
We provide a default `BatchFixAllProvider` implementation of a FixAll provider that uses the underlying code fixer to compute the FixAll occurrences code fixes.
To use the batch fixer, you should return the static `WellKnownFixAllProviders.BatchFixer` instance in the `CodeFixProvider.GetFixAllProvider` override.
NOTE: See the following section on **'Limitations of the BatchFixer'** to determine if the batch fixer can be used by your code fixer.
Given a trigger diagnostic, a trigger code action, the underlying code fixer and the FixAll scope, the BatchFixer computes FixAll occurrences code fix with the following steps:
- - Compute all instances of the trigger diagnostic across the FixAll scope.
- - For each computed diagnostic, invoke the underlying code fixer to compute the set of code actions to fix the diagnostic.
- - Collect all the registered code actions that have the same equivalence key as the trigger code action.
- - Apply all these code actions on the original solution snapshot to compute new solution snapshots. The batch fixer only batches code action operations of type `ApplyChangesOperation` present within the individual code actions, other types of operations are ignored.
- - Sequentially merge the new solution snapshots into a final solution snapshot. Only non-conflicting code actions whose fix spans don't overlap the fix spans of prior merged code actions are retained.
-Limitations of the BatchFixer
-=============================
+- Compute all instances of the trigger diagnostic across the FixAll scope.
+- For each computed diagnostic, invoke the underlying code fixer to compute the set of code actions to fix the diagnostic.
+- Collect all the registered code actions that have the same equivalence key as the trigger code action.
+- Apply all these code actions on the original solution snapshot to compute new solution snapshots. The batch fixer only batches code action operations of type `ApplyChangesOperation` present within the individual code actions, other types of operations are ignored.
+- Sequentially merge the new solution snapshots into a final solution snapshot. Only non-conflicting code actions whose fix spans don't overlap the fix spans of prior merged code actions are retained.
+
+# Limitations of the BatchFixer
The BatchFixer is designed for a common category of fixers where fix spans for diagnostics don't overlap with each other. For example, assume there is a diagnostic that spans a particular expression, and a fixer that fixes that expression. If all the instances of this diagnostic are guaranteed to have non-overlapping spans, then their fixes can be computed independently and this batch of fixes can be subsequently merged together.
However, there are cases where the BatchFixer might not work for your fixer. Following are some such examples:
- - Code fixer registers code actions without an equivalence key or with a null equivalence key.
- - Code fixer registers non-local code actions, i.e. a code action whose fix span is completely distinct from diagnostic span. For example, a fix that adds a new declaration node. Multiple such fixes are likely to have overlapping spans and hence could be conflicting.
- - Diagnostics to be fixed as part of FixAll occurrences have overlapping spans. It is likely that fixes for such diagnostics will have overlapping spans too, and hence would conflict with each other.
- - Code fixer registers code actions with operations other than `ApplyChangesOperation`. BatchFixer ignores such operations and hence may produce unexpected results.
-Implementing a custom FixAllProvider
-====================================
+- Code fixer registers code actions without an equivalence key or with a null equivalence key.
+- Code fixer registers non-local code actions, i.e. a code action whose fix span is completely distinct from diagnostic span. For example, a fix that adds a new declaration node. Multiple such fixes are likely to have overlapping spans and hence could be conflicting.
+- Diagnostics to be fixed as part of FixAll occurrences have overlapping spans. It is likely that fixes for such diagnostics will have overlapping spans too, and hence would conflict with each other.
+- Code fixer registers code actions with operations other than `ApplyChangesOperation`. BatchFixer ignores such operations and hence may produce unexpected results.
+
+# Implementing a custom FixAllProvider
For cases where you cannot use the BatchFixer, you must implement your own `FixAllProvider`. It is recommended that you create a singleton instance of the FixAll provider, instead of creating a new instance for every `CodeFixProvider.GetFixAllProvider` invocation.
Following guidelines should help in the implementation:
- - **GetFixAsync:** Primary method to compute the FixAll occurrences code fix for a given `FixAllContext`. You may use the set of 'GetXXXDiagnosticsAsync' methods on the `FixAllContext` to compute the diagnostics to be fixed. You must return a single code action that fixes all the diagnostics in the given FixAll scope.
- - **GetSupportedFixAllScopes:** Virtual method to get all the supported FixAll scopes. By default, it returns all the three supported scopes: document, project and solution scopes. Generally, you need not override this method. However, you may do so if you wish to support a subset of these scopes.
- - **GetSupportedFixAllDiagnosticIds:** Virtual method to get all the fixable diagnostic ids. By default, it returns the underlying code fixer's `FixableDiagnosticIds`. Generally, you need not override this method. However, you may do so if you wish to support FixAll only for a subset of these ids.
-See [DeclarePublicAPIFix](https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/Core/CodeFixes/DeclarePublicApiFix.cs) for an example implementation of a custom FixAllProvider.
+- **GetFixAsync:** Primary method to compute the FixAll occurrences code fix for a given `FixAllContext`. You may use the set of 'GetXXXDiagnosticsAsync' methods on the `FixAllContext` to compute the diagnostics to be fixed. You must return a single code action that fixes all the diagnostics in the given FixAll scope.
+- **GetSupportedFixAllScopes:** Virtual method to get all the supported FixAll scopes. By default, it returns all the three supported scopes: document, project and solution scopes. Generally, you need not override this method. However, you may do so if you wish to support a subset of these scopes.
+- **GetSupportedFixAllDiagnosticIds:** Virtual method to get all the fixable diagnostic ids. By default, it returns the underlying code fixer's `FixableDiagnosticIds`. Generally, you need not override this method. However, you may do so if you wish to support FixAll only for a subset of these ids.
+
+See [DeclarePublicAPIFix](https://github.com/dotnet/roslyn/blob/main/src/RoslynAnalyzers/PublicApiAnalyzers/Core/CodeFixes/DeclarePublicApiFix.cs) for an example implementation of a custom FixAllProvider.
diff --git a/docs/roslyn-analyzers/README.md b/docs/roslyn-analyzers/README.md
new file mode 100644
index 0000000000000..be255b10a37e8
--- /dev/null
+++ b/docs/roslyn-analyzers/README.md
@@ -0,0 +1,37 @@
+# Roslyn Analyzers
+
+## Microsoft.CodeAnalysis.Analyzers
+
+*Latest stable version:* [](https://www.nuget.org/packages/Microsoft.CodeAnalysis.Analyzers)
+
+*Latest pre-release version:* [here](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet7/NuGet/Microsoft.CodeAnalysis.Analyzers/versions)
+
+This package contains rules for correct usage of APIs from the [Microsoft.CodeAnalysis](https://www.nuget.org/packages/Microsoft.CodeAnalysis) NuGet package, i.e. .NET Compiler Platform ("Roslyn") APIs. These are primarily aimed towards helping authors of diagnostic analyzers and code fix providers to invoke the Microsoft.CodeAnalysis APIs in a recommended manner. [More info about rules in this package](../../src/RoslynAnalyzers/Microsoft.CodeAnalysis.Analyzers/Microsoft.CodeAnalysis.Analyzers.md)
+
+## Roslyn.Diagnostics.Analyzers
+
+*Latest stable version:* [](https://www.nuget.org/packages/Roslyn.Diagnostics.Analyzers)
+
+*Latest pre-release version:* [here](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet7/NuGet/Roslyn.Diagnostics.Analyzers/versions)
+
+This package contains rules that are very specific to the .NET Compiler Platform ("Roslyn") project, i.e. [dotnet/roslyn](https://github.com/dotnet/roslyn) repo. This analyzer package is *not intended for general consumption* outside the Roslyn repo. [More info about rules in this package](../../src/RoslynAnalyzers/Roslyn.Diagnostics.Analyzers/Roslyn.Diagnostics.Analyzers.md)
+
+## Microsoft.CodeAnalysis.BannedApiAnalyzers
+
+*Latest stable version:* [](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BannedApiAnalyzers)
+
+*Latest pre-release version:* [here](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet7/NuGet/Microsoft.CodeAnalysis.BannedApiAnalyzers/versions)
+
+This package contains customizable rules for identifying references to banned APIs. [More info about rules in this package](../../src/RoslynAnalyzers/Microsoft.CodeAnalysis.BannedApiAnalyzers/Microsoft.CodeAnalysis.BannedApiAnalyzers.md)
+
+For instructions on using this analyzer, see [Instructions](../../src/RoslynAnalyzers/Microsoft.CodeAnalysis.BannedApiAnalyzers/BannedApiAnalyzers.Help.md).
+
+## Microsoft.CodeAnalysis.PublicApiAnalyzers
+
+*Latest stable version:* [](https://www.nuget.org/packages/Microsoft.CodeAnalysis.PublicApiAnalyzers)
+
+*Latest pre-release version:* [here](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet7/NuGet/Microsoft.CodeAnalysis.PublicApiAnalyzers/versions)
+
+This package contains rules to help library authors monitoring change to their public APIs. [More info about rules in this package](../../src/RoslynAnalyzers/PublicApiAnalyzers/Microsoft.CodeAnalysis.PublicApiAnalyzers.md)
+
+For instructions on using this analyzer, see [Instructions](../../src/RoslynAnalyzers/PublicApiAnalyzers/PublicApiAnalyzers.Help.md).
\ No newline at end of file
diff --git a/docs/roslyn-analyzers/rules/RS1022.md b/docs/roslyn-analyzers/rules/RS1022.md
new file mode 100644
index 0000000000000..ecdb021e08d2b
--- /dev/null
+++ b/docs/roslyn-analyzers/rules/RS1022.md
@@ -0,0 +1,22 @@
+## RS1022: Do not use types from Workspaces assembly in an analyzer
+
+Diagnostic analyzer types should not use types from Workspaces assemblies. Workspaces assemblies are only available when the analyzer executes in Visual Studio IDE live analysis, but are not available during command line build. Referencing types from Workspaces assemblies will lead to runtime exception during analyzer execution in command line build.
+
+|Item|Value|
+|-|-|
+|Category|MicrosoftCodeAnalysisCorrectness|
+|Enabled|True|
+|Severity|Warning|
+|CodeFix|False|
+---
+
+> **Warning**
+>
+> The analysis performed by RS1022 is slow and relies on implementation details of the JIT compiler for correctness.
+> Authors of compiler extensions are encouraged to use the stricter (and faster) analyzer RS1038 instead of this rule.
+>
+> RS1038 is enabled by default. To enable RS1022 instead, the following configuration may be added to **.globalconfig**:
+>
+> ```ini
+> roslyn_correctness.assembly_reference_validation = relaxed
+> ```
diff --git a/docs/roslyn-analyzers/rules/RS1038.md b/docs/roslyn-analyzers/rules/RS1038.md
new file mode 100644
index 0000000000000..e0d73e8db2d4d
--- /dev/null
+++ b/docs/roslyn-analyzers/rules/RS1038.md
@@ -0,0 +1,46 @@
+## RS1038: Compiler extensions should be implemented in assemblies with compiler-provided references
+
+Types which implement compiler extension points should not be declared in assemblies that contain references to assemblies which are not provided by all compilation scenarios. Doing so may cause the feature to behave unpredictably.
+
+|Item|Value|
+|-|-|
+|Category|MicrosoftCodeAnalysisCorrectness|
+|Enabled|True|
+|Severity|Warning|
+|CodeFix|False|
+---
+
+This rule helps ensure compiler extensions (e.g. analyzers and source generators) will load correctly in all compilation
+scenarios. Depending on the manner in which the compiler is invoked, some assemblies may not be present during a build,
+and attempting to reference them will result in exceptions that prevent the compiler extension from loading. RS1038 is
+the most strict and best performing validation for this scenario.
+
+RS1038 is enabled by default unless relaxed validation has been manually enabled in **.globalconfig** as described in
+[RS1022](RS1022.md).
+
+### Rules for compiler feature references
+
+* Compiler features supporting C# code should only reference the NuGet packages **Microsoft.CodeAnalysis.Common** and/or **Microsoft.CodeAnalysis.CSharp**
+* Compiler features supporting Visual Basic code should only reference **Microsoft.CodeAnalysis.Common** and/or **Microsoft.CodeAnalysis.VisualBasic**
+* Compiler features supporting both C# and Visual Basic should only reference **Microsoft.CodeAnalysis.Common**
+* Compiler features should not be implemented in assemblies containing a reference to **Microsoft.CodeAnalysis.Workspaces.Common**
+
+> **Note**
+>
+> This analyzer only checks references to the core Roslyn assemblies. Compiler extensions with other dependencies may
+> face restrictions and/or packaging requirements outside the scope of this analyzer.
+
+### Compiler extension points
+
+The following compiler extension points are examined by this analyzer:
+
+* `DiagnosticAnalyzer`
+* `DiagnosticSuppressor`
+* `ISourceGenerator`
+* `IIncrementalGenerator`
+
+### Other extension points
+
+Some extension points provided by Roslyn are IDE extensions (e.g. code fixes and completion providers). These features
+may ship in the same package as compiler features, but should be implemented in their own assembly since they require a
+reference to non-compiler package **Microsoft.CodeAnalysis.Workspaces.Common**.
diff --git a/docs/roslyn-analyzers/rules/RS1041.md b/docs/roslyn-analyzers/rules/RS1041.md
new file mode 100644
index 0000000000000..4d60ec77358bb
--- /dev/null
+++ b/docs/roslyn-analyzers/rules/RS1041.md
@@ -0,0 +1,25 @@
+## RS1041: Compiler extensions should be implemented in assemblies targeting netstandard2.0
+
+Types which implement compiler extension points should only be declared in assemblies targeting netstandard2.0. More specific target frameworks are only available in a subset of supported compilation scenarios, so targeting them may cause the feature to behave unpredictably.
+
+|Item|Value|
+|-|-|
+|Category|MicrosoftCodeAnalysisCorrectness|
+|Enabled|True|
+|Severity|Warning|
+|CodeFix|False|
+---
+
+This rule helps ensure compiler extensions (e.g. analyzers and source generators) will load correctly in all compilation
+scenarios. Depending on the manner in which the compiler is invoked, the compiler may execute under .NET Framework or
+.NET, and compiler extensions are expected to work consistently in both cases. By targeting netstandard2.0, compiler
+extensions are known to be compatible with both execution environments.
+
+### Compiler extension points
+
+The following compiler extension points are examined by this analyzer:
+
+* `DiagnosticAnalyzer`
+* `DiagnosticSuppressor`
+* `ISourceGenerator`
+* `IIncrementalGenerator`
diff --git a/eng/Directory.Packages.props b/eng/Directory.Packages.props
index 780303429343d..bbdb6eebfef89 100644
--- a/eng/Directory.Packages.props
+++ b/eng/Directory.Packages.props
@@ -21,6 +21,8 @@
8.0.10
<_xunitVersion>2.9.2
2.1.0
+
+ 2.14.1
@@ -225,8 +227,12 @@
+
+
+
+
-
+
@@ -237,10 +243,15 @@
+
+
+
+
+
@@ -314,5 +325,15 @@
the generators we build would load on the command line but not load in IDEs.
-->
-
+
+
+
+
+
+
+
+
diff --git a/eng/SourceBuildPrebuiltBaseline.xml b/eng/SourceBuildPrebuiltBaseline.xml
index b0ff6e9a88c54..1de1443142a26 100644
--- a/eng/SourceBuildPrebuiltBaseline.xml
+++ b/eng/SourceBuildPrebuiltBaseline.xml
@@ -3,10 +3,10 @@
-
+ overridden by previous repo outputs or come from previously source-built artifacts. -->
@@ -49,6 +49,15 @@
+
+
+
+
+
+
+
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 44a5bd73fb697..ed9fd3a97dcec 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,11 @@
+
+
+ https://github.com/dotnet/roslyn
+ ae1fff344d46976624e68ae17164e0607ab68b10
+ https://github.com/dotnet/source-build-externals
diff --git a/eng/Versions.props b/eng/Versions.props
index b22d322d4291a..3ff54c131b63b 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -92,6 +92,59 @@
4.61.36.34.0
+
+
+
+
+
+ 3.11.0
+ 1.2.1
+ 3.11.0
+ 3.11.0
+ 4.0.1
+ 3.11.0
+ 3.11.0
+ 3.11.0
+ 3.11.0
+ 4.0.1
+
+
+ 4.9.0-3.final
+ 4.6.0-1.final
+ truefalse
@@ -104,7 +157,7 @@
falsetrue
- true
+ true
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+
+
+
+ $(IntermediateOutputPath)$(NuspecPackageId).nuspec
+ $(ArtifactsBinDir)
+ false
+ $(TargetFrameworks)
+ $(TargetFramework)
+
+
+
+
+ false
+ false
+ false
+ MIT
+
+
+
+ $(DotNetRoot)dotnet.exe
+ $(DotNetRoot)dotnet
+ \
+
+
+
+
+
+ <_GeneratedRulesetsDir>$(IntermediateOutputPath)Rulesets
+ <_GeneratedEditorconfigsDir>$(IntermediateOutputPath)Editorconfig
+ <_GeneratedGlobalAnalyzerConfigsDir>$(IntermediateOutputPath)GlobalAnalyzerConfigs
+ <_ValidateOffline Condition="'$(DotNetBuildSourceOnly)' == 'true' or '$(DotNetBuild)' == 'true'">true
+ <_ValidateOffline Condition="'$(_ValidateOffline)' == ''">false
+ false
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ $(IntermediateOutputPath)Build
+ $(NuspecPackageId).props
+
+
+
+
+
+
+ DisableNETAnalyzersForNuGetPackage.props
+
+
+
+
+
+
+ $(IntermediateOutputPath)Build
+ $(NuspecPackageId).targets
+
+
+
+ $(RepoRoot)src\RoslynAnalyzers\$(NuspecPackageId)
+ $(NuspecPackageId).md
+
+
+
+ $(RepoRoot)src\RoslynAnalyzers\$(NuspecPackageId)
+ $(NuspecPackageId).sarif
+
+
+
+ $(RepoRoot)docs\roslyn-analyzers
+ Analyzer Configuration.md
+
+
+
+
+ ForBrokenRuntime
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_GenerateAnalyzerNuspecPath>$(ArtifactsBinDir)GenerateAnalyzerNuspec\$(Configuration)\$(NetRoslyn)\GenerateAnalyzerNuspec.dll
+
+
+
+
+
+
+
+
+
+
+
+ <_NuspecMetadata Include="version=$(PackageVersion)" />
+ <_NuspecMetadata Include="id=$(NuspecPackageId)" />
+ <_NuspecMetadata Include="authors=$(Authors)" />
+ <_NuspecMetadata Include="owners=$(Authors)" />
+ <_NuspecMetadata Include="requireLicenseAcceptance=$(PackageRequireLicenseAcceptance)" />
+ <_NuspecMetadata Include="description=$(Description)" />
+ <_NuspecMetadata Include="copyright=$(Copyright)" />
+ <_NuspecMetadata Include="license=$(PackageLicenseExpression)" />
+ <_NuspecMetadata Include="projectUrl=$(PackageProjectUrl)" />
+ <_NuspecMetadata Include="icon=$(PackageIcon)" />
+ <_NuspecMetadata Include="releaseNotes=$(PackageReleaseNotes)" />
+ <_NuspecMetadata Include="tags=$(PackageTags)" />
+ <_NuspecMetadata Include="serviceable=$(Serviceable)" />
+ <_NuspecMetadata Include="developmentDependency=$(DevelopmentDependency)" />
+ <_NuspecMetadata Include="repositoryType=$(RepositoryType)" />
+ <_NuspecMetadata Include="repositoryCommit=$(SourceRevisionId)" />
+ <_NuspecMetadata Include="repositoryUrl=$(PrivateRepositoryUrl)" />
+ <_NuspecMetadata Include="readme=$(PackageReadmeFile)" />
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/eng/targets/XUnit.targets b/eng/targets/XUnit.targets
index d6f404fe5ad65..c516e0e27296a 100644
--- a/eng/targets/XUnit.targets
+++ b/eng/targets/XUnit.targets
@@ -19,12 +19,12 @@
-
+
diff --git a/eng/test-determinism.ps1 b/eng/test-determinism.ps1
index 3a16cef0b11b5..18ef2f3fb1df1 100644
--- a/eng/test-determinism.ps1
+++ b/eng/test-determinism.ps1
@@ -29,7 +29,10 @@ $script:skipList = @(
"Microsoft.CodeAnalysis.EditorFeatures2.UnitTests.dll",
# Work around XLF issues https://github.com/dotnet/roslyn/issues/58840
- "Roslyn.VisualStudio.DiagnosticsWindow.dll.key"
+ "Roslyn.VisualStudio.DiagnosticsWindow.dll.key",
+
+ # Work around resx issues https://github.com/dotnet/roslyn/issues/77544
+ "Text.Analyzers.dll.key"
)
function Run-Build([string]$rootDir, [string]$logFileName) {
diff --git a/src/RoslynAnalyzers/Assets/EULA.txt b/src/RoslynAnalyzers/Assets/EULA.txt
new file mode 100644
index 0000000000000..5381538068d65
--- /dev/null
+++ b/src/RoslynAnalyzers/Assets/EULA.txt
@@ -0,0 +1,44 @@
+MICROSOFT PRE-RELEASE SOFTWARE LICENSE TERMS
+MICROSOFT CODE ANALYSIS 2017 NONE
+These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have different terms.
+IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW.
+1. INSTALLATION AND USE RIGHTS.
+You may install and use any number of copies of the software to develop and test your applications.
+2. PRE-RELEASE SOFTWARE. This software is a pre-release version. It may not work the way a final version of the software will. We may change it for the final, commercial version. We also may not release a commercial version.
+3. FEEDBACK. If you give feedback about the software to Microsoft, you give to Microsoft, without charge, the right to use, share and commercialize your feedback in any way and for any purpose. You will not give feedback that is subject to a license that requires Microsoft to license its software or documentation to third parties because we include your feedback in them. These rights survive this agreement.
+4. DISTRIBUTABLE CODE. The software contains code that you are permitted to distribute in applications you develop if you comply with the terms below. (For this Section the term “distribution” also means deployment of your applications for third parties to access over the Internet.)
+i. Distribution Rights. The code and text files listed below are “Distributable Code.”
+• REDIST.TXT Files. You may copy and distribute the object code form of code listed in REDIST.TXT files, and/or any files listed on the REDIST list located following this Microsoft Software License Terms.
+• Sample Code and Template. You may copy, modify and distribute the source and object code form of code marked as “sample” and “template”.
+• Third Party Distribution. You may permit distributors of your applications to copy and distribute the Distributable Code as part of those applications.
+ii. Distribution Requirements. For any Distributable Code you distribute, you must
+• add significant primary functionality to it in your applications;
+• distribute Distributable Code included in a setup program only as part of that setup program without modification;
+• require distributors and external end users to agree to terms that protect the Distributable Code at least as much as this agreement; and,
+• indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your applications, except to the extent that any claim is based solely on the Distributable Code.
+iii. Distribution Restrictions. You may not use Microsoft’s trademarks in your applications’ names or branding in a way that suggests your applications come from or are endorsed by Microsoft; or modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that (i) the code be disclosed or distributed in source code form; or (ii) others have the right to modify it.
+5. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not
+• work around any technical limitations in the software;
+• reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
+• remove, minimize, block or modify any notices of Microsoft or its suppliers in the software;
+• use the software in any way that is against the law; or
+• share, publish or lend the software, or provide the software as a stand-alone hosted as solution for others to use, or transfer the software or this agreement to any third party.
+6. EXPORT RESTRICTIONS. Microsoft software, online services, professional services and related technology are subject to U.S. export jurisdiction. You must comply with all applicable international and national laws, including the U.S. Export Administration Regulations, the International Traffic in Arms Regulations, Office of Foreign Assets Control sanctions programs, and end-user, end use and destination restrictions by the U.S. and other governments related to Microsoft products, services and technologies. For additional information, see www.microsoft.com/exporting.
+7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it.
+8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
+9. APPLICABLE LAW. If you acquired the software in the United States, Washington law applies to interpretation of and claims for breach of this agreement, and the laws of the state where you live apply to all other claims. If you acquired the software in any other country, its laws apply.
+10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your state or country. This agreement does not change your rights under the laws of your state or country if the laws of your state or country do not permit it to do so. Without limitation of the foregoing, for Australia, YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS.
+11. DISCLAIMER OF WARRANTY. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. LIMITATION ON AND EXCLUSION OF DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
+This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
+It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.
+Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.
+Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français.
+EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues.
+LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices.
+Cette limitation concerne:
+• tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et
+• les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur.
+Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard.
+EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas.
+
diff --git a/src/RoslynAnalyzers/Assets/ThirdPartyNotices.txt b/src/RoslynAnalyzers/Assets/ThirdPartyNotices.txt
new file mode 100644
index 0000000000000..1ea2df7a9583b
--- /dev/null
+++ b/src/RoslynAnalyzers/Assets/ThirdPartyNotices.txt
@@ -0,0 +1,260 @@
+NOTICES AND INFORMATION
+Do Not Translate or Localize
+
+The Roslyn Analyzers software incorporates material from third parties. Microsoft makes certain open source code available at https://3rdpartysource.microsoft.com, or you may send a check or money order for US $5.00, including the product name, the open source component name, and version number, to:
+
+Source Code Compliance Team
+Microsoft Corporation
+One Microsoft Way
+Redmond, WA 98052
+USA
+
+Notwithstanding any other terms, you may reverse engineer this software to the extent required to debug changes to any libraries licensed under the GNU Lesser General Public License.
+
+%% .NET Compiler Platform NOTICES AND INFORMATION BEGIN HERE
+=========================================
+Copyright (c) .NET Foundation. All rights reserved.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+=========================================
+END OF .NET Compiler Platform NOTICES AND INFORMATION
+
+%% Humanizer NOTICES AND INFORMATION BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2012-2014 Mehdi Khalili
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+==============================================================================
+
+Inflector (https://github.com/srkirkland/Inflector)
+The MIT License (MIT)
+Copyright (c) 2013 Scott Kirkland
+
+==============================================================================
+
+ByteSize (https://github.com/omar/ByteSize)
+The MIT License (MIT)
+Copyright (c) 2013-2014 Omar Khudeira (http://omar.io)
+
+==============================================================================
+=========================================
+END OF Humanizer NOTICES AND INFORMATION
diff --git a/src/RoslynAnalyzers/Assets/install.ps1 b/src/RoslynAnalyzers/Assets/install.ps1
new file mode 100644
index 0000000000000..e3629746d6de5
--- /dev/null
+++ b/src/RoslynAnalyzers/Assets/install.ps1
@@ -0,0 +1,55 @@
+param($installPath, $toolsPath, $package, $project)
+
+$analyzersDir = Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers"
+if (-Not (Test-Path $analyzersDir))
+{
+ return
+}
+
+$analyzersPaths = Join-Path ( $analyzersDir ) * -Resolve
+
+foreach($analyzersPath in $analyzersPaths)
+{
+ # Install the language agnostic analyzers.
+ if (Test-Path $analyzersPath)
+ {
+ foreach ($analyzerFilePath in Get-ChildItem $analyzersPath -Filter *.dll)
+ {
+ if($project.Object.AnalyzerReferences)
+ {
+ $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)
+ }
+ }
+ }
+}
+
+# $project.Type gives the language name like (C# or VB.NET)
+$languageFolder = ""
+if($project.Type -eq "C#")
+{
+ $languageFolder = "cs"
+}
+if($project.Type -eq "VB.NET")
+{
+ $languageFolder = "vb"
+}
+if($languageFolder -eq "")
+{
+ return
+}
+
+foreach($analyzersPath in $analyzersPaths)
+{
+ # Install language specific analyzers.
+ $languageAnalyzersPath = join-path $analyzersPath $languageFolder
+ if (Test-Path $languageAnalyzersPath)
+ {
+ foreach ($analyzerFilePath in Get-ChildItem $languageAnalyzersPath -Filter *.dll)
+ {
+ if($project.Object.AnalyzerReferences)
+ {
+ $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/RoslynAnalyzers/Assets/uninstall.ps1 b/src/RoslynAnalyzers/Assets/uninstall.ps1
new file mode 100644
index 0000000000000..009291bb6aec1
--- /dev/null
+++ b/src/RoslynAnalyzers/Assets/uninstall.ps1
@@ -0,0 +1,62 @@
+param($installPath, $toolsPath, $package, $project)
+
+$analyzersDir = Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers"
+if (-Not (Test-Path $analyzersDir))
+{
+ return
+}
+
+$analyzersPaths = Join-Path ( $analyzersDir ) * -Resolve
+
+foreach($analyzersPath in $analyzersPaths)
+{
+ # Uninstall the language agnostic analyzers.
+ if (Test-Path $analyzersPath)
+ {
+ foreach ($analyzerFilePath in Get-ChildItem $analyzersPath -Filter *.dll)
+ {
+ if($project.Object.AnalyzerReferences)
+ {
+ $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName)
+ }
+ }
+ }
+}
+
+# $project.Type gives the language name like (C# or VB.NET)
+$languageFolder = ""
+if($project.Type -eq "C#")
+{
+ $languageFolder = "cs"
+}
+if($project.Type -eq "VB.NET")
+{
+ $languageFolder = "vb"
+}
+if($languageFolder -eq "")
+{
+ return
+}
+
+foreach($analyzersPath in $analyzersPaths)
+{
+ # Uninstall language specific analyzers.
+ $languageAnalyzersPath = join-path $analyzersPath $languageFolder
+ if (Test-Path $languageAnalyzersPath)
+ {
+ foreach ($analyzerFilePath in Get-ChildItem $languageAnalyzersPath -Filter *.dll)
+ {
+ if($project.Object.AnalyzerReferences)
+ {
+ try
+ {
+ $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName)
+ }
+ catch
+ {
+
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/RoslynAnalyzers/Common/Test/App.config b/src/RoslynAnalyzers/Common/Test/App.config
new file mode 100644
index 0000000000000..6b281a3a5318d
--- /dev/null
+++ b/src/RoslynAnalyzers/Common/Test/App.config
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/RoslynAnalyzers/Directory.Build.props b/src/RoslynAnalyzers/Directory.Build.props
new file mode 100644
index 0000000000000..35c7766c5e3b3
--- /dev/null
+++ b/src/RoslynAnalyzers/Directory.Build.props
@@ -0,0 +1,49 @@
+
+
+
+
+
+ true
+ $(MSBuildThisFileDirectory)Assets\
+
+
+ true
+
+
+
+
+ 3
+ 12
+ 0
+ $(MajorVersion).$(MinorVersion).$(PatchVersion)
+ beta1
+
+ $(MajorVersion).$(MinorVersion).0.0
+
+
+
+
+ false
+
+
+
+
+ $(Features);flow-analysis
+
+ $(DefineConstants),LEGACY_CODE_METRICS_MODE
+
+
+
+
+
+ $(NoWarn);CS1574;CS8602
+
+ $(NoWarn);CS8603
+
+
diff --git a/src/RoslynAnalyzers/Directory.Build.targets b/src/RoslynAnalyzers/Directory.Build.targets
new file mode 100644
index 0000000000000..0e012f14dddd5
--- /dev/null
+++ b/src/RoslynAnalyzers/Directory.Build.targets
@@ -0,0 +1,62 @@
+
+
+
+
+
+ true
+
+
+
+
+ $(NoWarn);RS2008
+
+
+
+
+ $(NoWarn);RS2007
+
+
+
+
+
+ EULA.txt
+ true
+
+
+ ThirdPartyNotices.txt
+ true
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+ AnalyzerReleases\$(AssemblyName)\AnalyzerReleases.Unshipped.md
+
+
+
+
+
+
+
+
+ PreserveNewest
+ AnalyzerReleases\$(AssemblyName)\AnalyzerReleases.Shipped.md
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.csproj b/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.csproj
new file mode 100644
index 0000000000000..30693b49566f9
--- /dev/null
+++ b/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.csproj
@@ -0,0 +1,30 @@
+
+
+
+ netstandard2.0
+
+ *$(MSBuildProjectFile)*
+ true
+ true
+ true
+
+
+ $(NoWarn);RS0026
+ $(MicrosoftCodeAnalysisVersionForCodeAnalysisAnalyzers)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/PublicAPI.Shipped.txt b/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/PublicAPI.Shipped.txt
new file mode 100644
index 0000000000000..5f282702bb03e
--- /dev/null
+++ b/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/PublicAPI.Shipped.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/PublicAPI.Unshipped.txt b/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/PublicAPI.Unshipped.txt
new file mode 100644
index 0000000000000..56c26da3562a9
--- /dev/null
+++ b/src/RoslynAnalyzers/Microsoft.CodeAnalysis.AnalyzerUtilities/PublicAPI.Unshipped.txt
@@ -0,0 +1,879 @@
+#nullable enable
+abstract Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ComputeEqualsByHashCodeParts(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext! obj) -> bool
+abstract Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ComputeHashCodePartsSpecific(ref Analyzer.Utilities.RoslynHashCode hashCode) -> void
+abstract Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.ValueDomain.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractValueDomain!
+abstract Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CacheBasedEquatable.ComputeEqualsByHashCodeParts(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CacheBasedEquatable! obj) -> bool
+abstract Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CacheBasedEquatable.ComputeHashCodeParts(ref Analyzer.Utilities.RoslynHashCode hashCode) -> void
+abstract Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor.GetAbstractDefaultValue(Microsoft.CodeAnalysis.ITypeSymbol? type) -> TAbstractAnalysisValue
+Analyzer.Utilities.AnalyzerOptionsExtensions
+Analyzer.Utilities.DisposeAnalysisKind
+Analyzer.Utilities.DisposeAnalysisKind.AllPaths = 0 -> Analyzer.Utilities.DisposeAnalysisKind
+Analyzer.Utilities.DisposeAnalysisKind.AllPathsOnlyNotDisposed = 1 -> Analyzer.Utilities.DisposeAnalysisKind
+Analyzer.Utilities.DisposeAnalysisKind.NonExceptionPaths = 2 -> Analyzer.Utilities.DisposeAnalysisKind
+Analyzer.Utilities.DisposeAnalysisKind.NonExceptionPathsOnlyNotDisposed = 3 -> Analyzer.Utilities.DisposeAnalysisKind
+Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.HazardousUsageEvaluationResult
+Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.HazardousUsageEvaluationResult.Flagged = 2 -> Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.HazardousUsageEvaluationResult
+Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.HazardousUsageEvaluationResult.MaybeFlagged = 1 -> Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.HazardousUsageEvaluationResult
+Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.HazardousUsageEvaluationResult.Unflagged = 0 -> Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.HazardousUsageEvaluationResult
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Dll = 1 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.FilePathInjection = 4 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.HardcodedCertificate = 14 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.HardcodedEncryptionKey = 13 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.InformationDisclosure = 2 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Ldap = 7 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.ProcessCommand = 5 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Redirect = 8 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Regex = 6 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Sql = 0 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Xaml = 11 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Xml = 10 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.XPath = 9 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.Xss = 3 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind.ZipSlip = 12 -> Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.SinkKind
+Analyzer.Utilities.Options.EnumValuesPrefixTrigger
+Analyzer.Utilities.Options.EnumValuesPrefixTrigger.AllEnumValues = 1 -> Analyzer.Utilities.Options.EnumValuesPrefixTrigger
+Analyzer.Utilities.Options.EnumValuesPrefixTrigger.AnyEnumValue = 0 -> Analyzer.Utilities.Options.EnumValuesPrefixTrigger
+Analyzer.Utilities.Options.EnumValuesPrefixTrigger.Heuristic = 2 -> Analyzer.Utilities.Options.EnumValuesPrefixTrigger
+Analyzer.Utilities.RoslynHashCode
+Analyzer.Utilities.RoslynHashCode.Add(T value) -> void
+Analyzer.Utilities.RoslynHashCode.Add(T value, System.Collections.Generic.IEqualityComparer? comparer) -> void
+Analyzer.Utilities.RoslynHashCode.RoslynHashCode() -> void
+Analyzer.Utilities.RoslynHashCode.ToHashCode() -> int
+Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Abstract = 8 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Async = 256 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Const = 2 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Extern = 128 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.None = 0 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Override = 32 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.ReadOnly = 4 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Sealed = 64 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Shared = 1 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Static = 1 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolModifiers.Virtual = 16 -> Analyzer.Utilities.SymbolModifiers
+Analyzer.Utilities.SymbolNamesWithValueOption
+Analyzer.Utilities.SymbolNamesWithValueOption.Contains(Microsoft.CodeAnalysis.ISymbol! symbol) -> bool
+Analyzer.Utilities.SymbolNamesWithValueOption.Equals(Analyzer.Utilities.SymbolNamesWithValueOption? other) -> bool
+Analyzer.Utilities.SymbolNamesWithValueOption.IsEmpty.get -> bool
+Analyzer.Utilities.SymbolNamesWithValueOption.NameParts
+Analyzer.Utilities.SymbolNamesWithValueOption.NameParts.AssociatedValue.get -> TValue
+Analyzer.Utilities.SymbolNamesWithValueOption.NameParts.NameParts(string! symbolName, TValue associatedValue) -> void
+Analyzer.Utilities.SymbolNamesWithValueOption.NameParts.SymbolName.get -> string!
+Analyzer.Utilities.SymbolNamesWithValueOption.TryGetValue(Microsoft.CodeAnalysis.ISymbol! symbol, out TValue value) -> bool
+Analyzer.Utilities.SymbolVisibilityGroup
+Analyzer.Utilities.SymbolVisibilityGroup.All = Analyzer.Utilities.SymbolVisibilityGroup.Public | Analyzer.Utilities.SymbolVisibilityGroup.Friend | Analyzer.Utilities.SymbolVisibilityGroup.Private -> Analyzer.Utilities.SymbolVisibilityGroup
+Analyzer.Utilities.SymbolVisibilityGroup.Friend = 2 -> Analyzer.Utilities.SymbolVisibilityGroup
+Analyzer.Utilities.SymbolVisibilityGroup.Internal = 2 -> Analyzer.Utilities.SymbolVisibilityGroup
+Analyzer.Utilities.SymbolVisibilityGroup.None = 0 -> Analyzer.Utilities.SymbolVisibilityGroup
+Analyzer.Utilities.SymbolVisibilityGroup.Private = 4 -> Analyzer.Utilities.SymbolVisibilityGroup
+Analyzer.Utilities.SymbolVisibilityGroup.Public = 1 -> Analyzer.Utilities.SymbolVisibilityGroup
+Analyzer.Utilities.Unit
+Analyzer.Utilities.Unit.Equals(Analyzer.Utilities.Unit other) -> bool
+Analyzer.Utilities.Unit.Unit() -> void
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.Children.get -> System.Collections.Immutable.ImmutableArray
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.CoupledNamedTypes.get -> System.Collections.Immutable.ImmutableHashSet!
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.CyclomaticComplexity.get -> int
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.DepthOfInheritance.get -> int?
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.ExecutableLines.get -> long
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.MaintainabilityIndex.get -> int
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.SourceLines.get -> long
+Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.Symbol.get -> Microsoft.CodeAnalysis.ISymbol!
+Microsoft.CodeAnalysis.CodeMetrics.CodeMetricsAnalysisContext.WellKnownTypeProvider.get -> Analyzer.Utilities.WellKnownTypeProvider!
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.BranchValue.get -> Microsoft.CodeAnalysis.IOperation?
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.ControlFlowConditionKind.get -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowConditionKind
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.Destination.get -> Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock!
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.EnteringRegions.get -> System.Collections.Immutable.ImmutableArray
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.FinallyRegions.get -> System.Collections.Immutable.ImmutableArray
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.Kind.get -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowBranchSemantics
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.LeavingRegionFlowCaptures.get -> System.Collections.Generic.IEnumerable!
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.LeavingRegionLocals.get -> System.Collections.Generic.IEnumerable!
+Microsoft.CodeAnalysis.FlowAnalysis.BranchWithInfo.LeavingRegions.get -> System.Collections.Immutable.ImmutableArray
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisData
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisData.AbstractAnalysisData() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisData.Dispose() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisData.IsDisposed.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisDomain
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisDomain.AbstractAnalysisDomain() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractBlockAnalysisResult
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractBlockAnalysisResult.AbstractBlockAnalysisResult(Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock! basicBlock) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractBlockAnalysisResult.BasicBlock.get -> Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.EntityForInstanceLocation.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.TryGetCopyValueForFlowCapture(Microsoft.CodeAnalysis.FlowAnalysis.CaptureId captureId, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValue! copyValue) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.LambdaAndLocalFunctionAnalysisInfo.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.LambdaAndLocalFunctionAnalysisInfo!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor.StandaloneLocalFunctionAnalysisResultsMap.get -> System.Collections.Immutable.ImmutableDictionary!>!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor.StreamingContextNamedType.get -> Microsoft.CodeAnalysis.INamedTypeSymbol?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor.TryGetPointsToAbstractValueAtEntryBlockEnd(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! analysisEntity, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue? pointsToAbstractValue) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.IDataFlowAnalysisResult.LambdaAndLocalFunctionAnalysisInfo.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.LambdaAndLocalFunctionAnalysisInfo!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisConfiguration.InterproceduralAnalysisConfiguration() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData.InterproceduralAnalysisData(TAnalysisData? initialAnalysisData, (Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity?, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue!)? invocationInstance, (Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity!, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue!)? thisOrMeInstanceForCaller, System.Collections.Immutable.ImmutableDictionary!>! argumentValuesMap, System.Collections.Immutable.ImmutableDictionary! capturedVariablesMap, System.Collections.Immutable.ImmutableDictionary! addressSharedEntities, System.Collections.Immutable.ImmutableStack! callStack, System.Collections.Immutable.ImmutableHashSet! methodsBeingAnalyzed, System.Func! getCachedAbstractValueFromCaller, System.Func! getInterproceduralControlFlowGraph, System.Func! getAnalysisEntityForFlowCapture, System.Func?>! getInterproceduralCallStackForOwningSymbol) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralCaptureId.InterproceduralCaptureId() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.LambdaAndLocalFunctionAnalysisInfo
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.LambdaAndLocalFunctionAnalysisInfo.AnalyzedLambdas.get -> System.Collections.Immutable.ImmutableHashSet!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.LambdaAndLocalFunctionAnalysisInfo.AnalyzedLocalFunctions.get -> System.Collections.Immutable.ImmutableHashSet!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.LambdaAndLocalFunctionAnalysisInfo.EscapedLambdas.get -> System.Collections.Immutable.ImmutableHashSet!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.LambdaAndLocalFunctionAnalysisInfo.EscapedLocalFunctions.get -> System.Collections.Immutable.ImmutableHashSet!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ValueContentAnalysis.ValueContentAnalysisContext.AdditionalSupportedValueTypes.get -> System.Collections.Immutable.ImmutableArray
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ValueContentAnalysis.ValueContentAnalysisContext.GetValueForAdditionalSupportedValueTypeOperation.get -> System.Func?
+abstract Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ForkForInterproceduralAnalysis(Microsoft.CodeAnalysis.IMethodSymbol! invokedMethod, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! invokedCfg, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? copyAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? valueContentAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData? interproceduralAnalysisData) -> TAnalysisContext!
+override Analyzer.Utilities.RoslynHashCode.Equals(object? obj) -> bool
+override Analyzer.Utilities.RoslynHashCode.GetHashCode() -> int
+override Analyzer.Utilities.SymbolNamesWithValueOption.Equals(object? obj) -> bool
+override Analyzer.Utilities.SymbolNamesWithValueOption.GetHashCode() -> int
+override Analyzer.Utilities.Unit.Equals(object? obj) -> bool
+override Analyzer.Utilities.Unit.GetHashCode() -> int
+override Analyzer.Utilities.Unit.ToString() -> string!
+override Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAnalysisContext.ForkForInterproceduralAnalysis(Microsoft.CodeAnalysis.IMethodSymbol! invokedMethod, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! invokedCfg, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? copyAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? valueContentAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData? interproceduralAnalysisData) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAnalysisContext!
+override Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor.Visit(Microsoft.CodeAnalysis.IOperation? operation, object? argument) -> TAbstractAnalysisValue
+override Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor.VisitDelegateCreation(Microsoft.CodeAnalysis.Operations.IDelegateCreationOperation! operation, object? argument) -> TAbstractAnalysisValue
+override Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DisposeAnalysis.DisposeAnalysisContext.ForkForInterproceduralAnalysis(Microsoft.CodeAnalysis.IMethodSymbol! invokedMethod, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! invokedCfg, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? copyAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? valueContentAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData!, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DisposeAnalysis.DisposeAnalysisContext!, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DisposeAnalysis.DisposeAbstractValue!>? interproceduralAnalysisData) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DisposeAnalysis.DisposeAnalysisContext!
+override Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisContext.ForkForInterproceduralAnalysis(Microsoft.CodeAnalysis.IMethodSymbol! invokedMethod, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! invokedCfg, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? copyAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? valueContentAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData? interproceduralAnalysisData) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisContext!
+override Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ValueContentAnalysis.ValueContentAnalysisContext.ForkForInterproceduralAnalysis(Microsoft.CodeAnalysis.IMethodSymbol! invokedMethod, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! invokedCfg, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? copyAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? valueContentAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData? interproceduralAnalysisData) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ValueContentAnalysis.ValueContentAnalysisContext!
+override sealed Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ComputeEqualsByHashCodeParts(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CacheBasedEquatable! obj) -> bool
+override sealed Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ComputeHashCodeParts(ref Analyzer.Utilities.RoslynHashCode hashCode) -> void
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetAdditionalRequiredGenericInterfaces(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetAdditionalRequiredSuffixesOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetAdditionalStringFormattingMethodsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetAdditionalUseResultsMethodsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetAnalyzedSymbolKindsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, System.Collections.Immutable.ImmutableHashSet! defaultSymbolKinds) -> System.Collections.Immutable.ImmutableHashSet!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetBoolOptionValue(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, string! optionName, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetBoolOptionValue(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, string! optionName, Microsoft.CodeAnalysis.DiagnosticDescriptor? rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetCopyAnalysisOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetCopyAnalysisOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetDisallowedSymbolNamesWithValueOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetDisposeAnalysisKindOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, Analyzer.Utilities.DisposeAnalysisKind defaultValue) -> Analyzer.Utilities.DisposeAnalysisKind
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetDisposeAnalysisKindOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, Analyzer.Utilities.DisposeAnalysisKind defaultValue) -> Analyzer.Utilities.DisposeAnalysisKind
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetDisposeOwnershipTransferAtConstructorOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetDisposeOwnershipTransferAtConstructorOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetDisposeOwnershipTransferAtMethodCall(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetDisposeOwnershipTransferAtMethodCall(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, bool defaultValue) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetEnumerationMethodsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetEnumValuesPrefixTriggerOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, Analyzer.Utilities.Options.EnumValuesPrefixTrigger defaultValue) -> Analyzer.Utilities.Options.EnumValuesPrefixTrigger
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetInheritanceExcludedSymbolNamesOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, string! defaultForcedValue) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetInterproceduralAnalysisKindOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind defaultValue) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetInterproceduralAnalysisKindOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind defaultValue) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetLinqChainMethodsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetMSBuildItemMetadataValues(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, string! itemOptionName, Microsoft.CodeAnalysis.Compilation! compilation) -> System.Collections.Immutable.ImmutableArray
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetMSBuildPropertyValue(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, string! optionName, Microsoft.CodeAnalysis.Compilation! compilation) -> string?
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetNullCheckValidationMethodsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetOutputKindsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation) -> System.Collections.Immutable.ImmutableHashSet!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetOutputKindsOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, System.Collections.Immutable.ImmutableHashSet! defaultValue) -> System.Collections.Immutable.ImmutableHashSet!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetPointsToAnalysisKindOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisKind defaultValue) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisKind
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetPointsToAnalysisKindOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisKind defaultValue) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisKind
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetStringOptionValue(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, string! optionName, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation) -> string!
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetSymbolVisibilityGroupOption(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, Analyzer.Utilities.SymbolVisibilityGroup defaultValue) -> Analyzer.Utilities.SymbolVisibilityGroup
+static Analyzer.Utilities.AnalyzerOptionsExtensions.GetUnsignedIntegralOptionValue(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, string! optionName, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.SyntaxTree! tree, Microsoft.CodeAnalysis.Compilation! compilation, uint defaultValue) -> uint
+static Analyzer.Utilities.AnalyzerOptionsExtensions.IsConfiguredToSkipAnalysis(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.IsConfiguredToSkipAnalysis(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.ISymbol! containingContextSymbol, Microsoft.CodeAnalysis.Compilation! compilation) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.MatchesConfiguredModifiers(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, Analyzer.Utilities.SymbolModifiers defaultRequiredModifiers = Analyzer.Utilities.SymbolModifiers.None) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.MatchesConfiguredVisibility(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.Compilation! compilation, Analyzer.Utilities.SymbolVisibilityGroup defaultRequiredVisibility = Analyzer.Utilities.SymbolVisibilityGroup.Public) -> bool
+static Analyzer.Utilities.AnalyzerOptionsExtensions.MatchesConfiguredVisibility(this Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! options, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.ISymbol! containingContextSymbol, Microsoft.CodeAnalysis.Compilation! compilation, Analyzer.Utilities.SymbolVisibilityGroup defaultRequiredVisibility = Analyzer.Utilities.SymbolVisibilityGroup.Public) -> bool
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8) -> int
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7) -> int
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6) -> int
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5) -> int
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1, T2 value2, T3 value3, T4 value4) -> int
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1, T2 value2, T3 value3) -> int
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1, T2 value2) -> int
+static Analyzer.Utilities.RoslynHashCode.Combine(T1 value1) -> int
+static Analyzer.Utilities.SymbolNamesWithValueOption.Create(System.Collections.Immutable.ImmutableArray symbolNames, Microsoft.CodeAnalysis.Compilation! compilation, string? optionalPrefix, System.Func.NameParts!>! getSymbolNamePartsFunc) -> Analyzer.Utilities.SymbolNamesWithValueOption!
+static Analyzer.Utilities.Unit.Default.get -> Analyzer.Utilities.Unit
+static Analyzer.Utilities.Unit.operator !=(Analyzer.Utilities.Unit first, Analyzer.Utilities.Unit second) -> bool
+static Analyzer.Utilities.Unit.operator ==(Analyzer.Utilities.Unit first, Analyzer.Utilities.Unit second) -> bool
+static Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.ComputeSynchronously(Microsoft.CodeAnalysis.CodeMetrics.CodeMetricsAnalysisContext! context) -> Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData!
+static Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData.ComputeSynchronously(Microsoft.CodeAnalysis.ISymbol! symbol, Microsoft.CodeAnalysis.CodeMetrics.CodeMetricsAnalysisContext! context) -> Microsoft.CodeAnalysis.CodeMetrics.CodeAnalysisMetricData!
+static Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.Create(Microsoft.CodeAnalysis.ISymbol? symbol, System.Collections.Immutable.ImmutableArray indices, Microsoft.CodeAnalysis.ITypeSymbol! type, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue! instanceLocation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? parent, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? entityForInstanceLocation) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity!
+static Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DisposeAnalysis.DisposeAnalysis.TryGetOrComputeResult(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! cfg, Microsoft.CodeAnalysis.ISymbol! owningSymbol, Analyzer.Utilities.WellKnownTypeProvider! wellKnownTypeProvider, Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! analyzerOptions, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, System.Collections.Immutable.ImmutableHashSet! disposeOwnershipTransferLikelyTypes, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisKind defaultPointsToAnalysisKind, bool trackInstanceFields, bool exceptionPathsAnalysis, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind interproceduralAnalysisKind = Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind.ContextSensitive, bool performCopyAnalysisIfNotUserConfigured = false, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisPredicate? interproceduralAnalysisPredicate = null, bool defaultDisposeOwnershipTransferAtConstructor = false, bool defaultDisposeOwnershipTransferAtMethodCall = false) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DisposeAnalysis.DisposeAnalysisResult?
+static Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisConfiguration.Create(Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! analyzerOptions, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! cfg, Microsoft.CodeAnalysis.Compilation! compilation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind defaultInterproceduralAnalysisKind, uint defaultMaxInterproceduralMethodCallChain = 3, uint defaultMaxInterproceduralLambdaOrLocalFunctionCallChain = 3) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisConfiguration
+static Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisConfiguration.Create(Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! analyzerOptions, System.Collections.Immutable.ImmutableArray rules, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! cfg, Microsoft.CodeAnalysis.Compilation! compilation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind defaultInterproceduralAnalysisKind, uint defaultMaxInterproceduralMethodCallChain = 3, uint defaultMaxInterproceduralLambdaOrLocalFunctionCallChain = 3) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisConfiguration
+static Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ValueContentAnalysis.ValueContentAnalysis.TryGetOrComputeResult(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! cfg, Microsoft.CodeAnalysis.ISymbol! owningSymbol, Analyzer.Utilities.WellKnownTypeProvider! wellKnownTypeProvider, Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! analyzerOptions, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisKind defaultPointsToAnalysisKind, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind interproceduralAnalysisKind = Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind.None, bool pessimisticAnalysis = true) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult?
+static Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ValueContentAnalysis.ValueContentAnalysis.TryGetOrComputeResult(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! cfg, Microsoft.CodeAnalysis.ISymbol! owningSymbol, Analyzer.Utilities.WellKnownTypeProvider! wellKnownTypeProvider, Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! analyzerOptions, Microsoft.CodeAnalysis.DiagnosticDescriptor! rule, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisKind defaultPointsToAnalysisKind, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? copyAnalysisResult, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind interproceduralAnalysisKind = Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisKind.None, bool pessimisticAnalysis = true, bool performCopyAnalysisIfNotUserConfigured = false, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisPredicate? interproceduralAnalysisPredicate = null, System.Collections.Immutable.ImmutableArray additionalSupportedValueTypes = default(System.Collections.Immutable.ImmutableArray), System.Func? getValueContentValueForAdditionalSupportedValueTypeOperation = null) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.AbstractDataFlowAnalysisContext(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractValueDomain! valueDomain, Analyzer.Utilities.WellKnownTypeProvider! wellKnownTypeProvider, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph! controlFlowGraph, Microsoft.CodeAnalysis.ISymbol! owningSymbol, Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions! analyzerOptions, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisConfiguration interproceduralAnalysisConfig, bool pessimisticAnalysis, bool predicateAnalysis, bool exceptionPathsAnalysis, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? copyAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult? valueContentAnalysisResult, System.Func! tryGetOrComputeAnalysisResult, Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph? parentControlFlowGraph, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData? interproceduralAnalysisData, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisPredicate? interproceduralAnalysisPredicate) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.AnalyzerOptions.get -> Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ControlFlowGraph.get -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.CopyAnalysisResult.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ExceptionPathsAnalysis.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.GetAnonymousFunctionControlFlowGraph(Microsoft.CodeAnalysis.FlowAnalysis.IFlowAnonymousFunctionOperation! lambda) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.GetLocalFunctionControlFlowGraph(Microsoft.CodeAnalysis.IMethodSymbol! localFunction) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.TryGetOrComputeAnalysisResult.get -> System.Func!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.InterproceduralAnalysisConfiguration.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisConfiguration
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.InterproceduralAnalysisData.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisData?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.InterproceduralAnalysisPredicate.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralAnalysisPredicate?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.OwningSymbol.get -> Microsoft.CodeAnalysis.ISymbol!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ParentControlFlowGraph.get -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.PessimisticAnalysis.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.PointsToAnalysisResult.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ValueContentAnalysisResult.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.PredicateAnalysis.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.ValueDomain.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractValueDomain!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDataFlowAnalysisContext.WellKnownTypeProvider.get -> Analyzer.Utilities.WellKnownTypeProvider!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDomain
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDomain.AbstractDomain() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDomain.Compare(T oldValue, T newValue) -> int
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractDomain.Equals(T value1, T value2) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractIndex
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractIndex.AbstractIndex() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.AnalysisEntity.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.CaptureId.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralCaptureId?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.CreationCallStack.get -> System.Collections.Immutable.ImmutableStack!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.Creation.get -> Microsoft.CodeAnalysis.IOperation?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.GetTopOfCreationCallStackOrCreation() -> Microsoft.CodeAnalysis.IOperation?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.IsAnalysisEntityDefaultLocation.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.IsNoLocation.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.IsNull.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.LocationType.get -> Microsoft.CodeAnalysis.ITypeSymbol?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.Symbol.get -> Microsoft.CodeAnalysis.ISymbol?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocation.TryGetNodeToReportDiagnostic(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult) -> Microsoft.CodeAnalysis.SyntaxNode?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocationDataFlowOperationVisitor
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocationDataFlowOperationVisitor.AbstractLocationDataFlowOperationVisitor(TAnalysisContext! analysisContext) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocationDataFlowOperationVisitor.ApplyMissingCurrentAnalysisDataForUnhandledExceptionData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData! coreDataAtException, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData! coreCurrentAnalysisData) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocationDataFlowOperationVisitor.ResetAnalysisData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData! currentAnalysisData) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocationDataFlowOperationVisitor.SetAbstractValue(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue! instanceLocation, TAbstractAnalysisValue value) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractLocationDataFlowOperationVisitor.SetAbstractValue(System.Collections.Generic.IEnumerable! locations, TAbstractAnalysisValue value) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractValueDomain
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractValueDomain.AbstractValueDomain() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.CaptureId.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.InterproceduralCaptureId?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.EqualsIgnoringInstanceLocation(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? other) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.EqualsIgnoringInstanceLocationId.get -> int
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.HasAncestor(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! ancestor) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.HasConstantValue.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.HasUnknownInstanceLocation.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.Indices.get -> System.Collections.Immutable.ImmutableArray
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.InstanceLocation.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.InstanceReferenceOperationSyntax.get -> Microsoft.CodeAnalysis.SyntaxNode?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.IsChildOrInstanceMember.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.IsLValueFlowCaptureEntity.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.IsThisOrMeInstance.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.Parent.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.Symbol.get -> Microsoft.CodeAnalysis.ISymbol?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.Type.get -> Microsoft.CodeAnalysis.ITypeSymbol!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity.WithMergedInstanceLocation(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! analysisEntityToMerge) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.AddTrackedEntities(System.Collections.Generic.HashSet! builder) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.AnalysisEntityBasedPredicateAnalysisData() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.AnalysisEntityBasedPredicateAnalysisData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData! data1, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData! data2, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.MapAbstractDomain! coreDataAnalysisDomain) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.AnalysisEntityBasedPredicateAnalysisData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData! fromData) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.AnalysisEntityBasedPredicateAnalysisData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData! mergedCoreAnalysisData, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PredicatedAnalysisData! predicatedData1, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PredicatedAnalysisData! predicatedData2, bool isReachableData, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.MapAbstractDomain! coreDataAnalysisDomain) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.AnalysisEntityBasedPredicateAnalysisData(System.Collections.Generic.IDictionary! fromData) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.ApplyPredicatedDataForEntity(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! predicatedEntity, bool trueData) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PredicateValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.BaseCompareHelper(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData! newData, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.MapAbstractDomain! coreDataAnalysisDomain) -> int
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.CoreAnalysisData.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.Equals(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData! other) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.HasAbstractValue(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! analysisEntity) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.RemoveEntries(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! key) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.StartTrackingPredicatedData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! predicatedEntity, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData? truePredicateData, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData? falsePredicateData) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.TryGetValue(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! key, out TValue value) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityBasedPredicateAnalysisData.this[Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! key].get -> TValue
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.AddTrackedEntities(System.Collections.Generic.HashSet! builder, bool forInterproceduralAnalysis = false) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.AnalysisEntityDataFlowOperationVisitor(TAnalysisContext! analysisContext) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.ApplyInterproceduralAnalysisResultHelper(System.Collections.Generic.IDictionary! resultToApply) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.ApplyMissingCurrentAnalysisDataForUnhandledExceptionData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData! coreDataAtException, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData! coreCurrentAnalysisData, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ThrownExceptionInfo! throwBranchWithExceptionType) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.GetChildAnalysisEntities(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue? instanceLocation) -> System.Collections.Immutable.ImmutableHashSet!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.GetClonedAnalysisDataHelper(System.Collections.Generic.IDictionary! analysisData) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.GetTrimmedCurrentAnalysisDataHelper(System.Collections.Generic.IEnumerable! withEntities, System.Collections.Generic.IDictionary! existingValues, System.Action! setAbstractValue) -> TAnalysisData!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityDataFlowOperationVisitor.ResetAnalysisData(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DictionaryAnalysisData! currentAnalysisData) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.CreateWithNewInstanceRoot(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! analysisEntity, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! newRootInstance) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.ThisOrMeInstance.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.TryCreate(Microsoft.CodeAnalysis.IOperation! operation, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? analysisEntity) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.TryCreateForArrayElementInitializer(Microsoft.CodeAnalysis.Operations.IArrayCreationOperation! arrayCreation, System.Collections.Immutable.ImmutableArray indices, Microsoft.CodeAnalysis.ITypeSymbol! elementType, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? analysisEntity) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.TryCreateForSymbolDeclaration(Microsoft.CodeAnalysis.ISymbol! symbol, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? analysisEntity) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.TryCreateForTupleElements(Microsoft.CodeAnalysis.Operations.ITupleOperation! tupleOperation, out System.Collections.Immutable.ImmutableArray elementEntities) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.TryGetForFlowCapture(Microsoft.CodeAnalysis.FlowAnalysis.CaptureId captureId, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity! analysisEntity) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityFactory.TryGetForInterproceduralAnalysis(Microsoft.CodeAnalysis.IOperation! operation, out Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? analysisEntity) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityMapAbstractDomain
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntityMapAbstractDomain.AnalysisEntityMapAbstractDomain(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractValueDomain! valueDomain, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAnalysisResult? pointsToAnalysisResult) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ArgumentInfo
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ArgumentInfo.AnalysisEntity.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ArgumentInfo.ArgumentInfo(Microsoft.CodeAnalysis.IOperation! operation, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AnalysisEntity? analysisEntity, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue! instanceLocation, TAbstractAnalysisValue value) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ArgumentInfo.InstanceLocation.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PointsToAnalysis.PointsToAbstractValue!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ArgumentInfo.Operation.get -> Microsoft.CodeAnalysis.IOperation!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.ArgumentInfo.Value.get -> TAbstractAnalysisValue
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CacheBasedEquatable
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CacheBasedEquatable.CacheBasedEquatable() -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CacheBasedEquatable.Equals(T? other) -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValue
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValue.AnalysisEntities.get -> System.Collections.Immutable.ImmutableHashSet!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValue.Kind.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind.Invalid = 4 -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind.KnownReferenceCopy = 1 -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind.KnownValueCopy = 2 -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind.NotApplicable = 0 -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind.Unknown = 3 -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAbstractValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAnalysis
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAnalysisContext
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyAnalysisData
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyBlockAnalysisResult
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyBlockAnalysisResult.Data.get -> System.Collections.Immutable.ImmutableDictionary!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.CopyAnalysis.CopyBlockAnalysisResult.IsReachable.get -> bool
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysis
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysis.AnalysisDomain.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisDomain!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysis.DataFlowAnalysis(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.AbstractAnalysisDomain! analysisDomain, Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor! operationVisitor) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysis.TryGetOrComputeResultCore(TAnalysisContext! analysisContext, bool cacheResult) -> TAnalysisResult?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysis.OperationVisitor.get -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowOperationVisitor!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.ControlFlowGraph.get -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.DataFlowAnalysisResult(Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult! other) -> void
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.EntryBlockOutput.get -> TBlockAnalysisResult!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.ExceptionPathsExitBlockOutput.get -> TBlockAnalysisResult?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.ExitBlockOutput.get -> TBlockAnalysisResult!
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.GetPredicateKind(Microsoft.CodeAnalysis.IOperation! operation) -> Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.PredicateValueKind
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult.MergedStateForUnhandledThrowOperations.get -> TBlockAnalysisResult?
+Microsoft.CodeAnalysis.FlowAnalysis.DataFlow.DataFlowAnalysisResult