diff --git a/.gitattributes b/.gitattributes
index f86bd2a20..7b2a9d679 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -111,5 +111,8 @@
*.verified.xml text eol=lf working-tree-encoding=UTF-8
*.verified.json text eol=lf working-tree-encoding=UTF-8
+# See https://github.com/MattKotsenas/SquiggleCop?tab=readme-ov-file#encodings--line-endings
+SquiggleCop.Baseline.yaml text eol=lf
+
# Fix syntax highlighting on GitHub to allow comments
.vscode/*.json linguist-language=JSON-with-Comments
\ No newline at end of file
diff --git a/Moq.Analyzers.sln b/Moq.Analyzers.sln
index d8c8a2ed4..e317f228e 100644
--- a/Moq.Analyzers.sln
+++ b/Moq.Analyzers.sln
@@ -3,18 +3,20 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.10.34928.147
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moq.Analyzers", "src\Moq.Analyzers\Moq.Analyzers.csproj", "{41ECC571-F586-460A-9BED-23528C8210C4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moq.Analyzers", "src\Analyzers\Moq.Analyzers.csproj", "{41ECC571-F586-460A-9BED-23528C8210C4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moq.Analyzers.Test", "tests\Moq.Analyzers.Test\Moq.Analyzers.Test.csproj", "{D2348836-7129-4BE5-8AE6-D05FC8C28FC1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moq.Analyzers.Benchmarks", "tests\Moq.Analyzers.Benchmarks\Moq.Analyzers.Benchmarks.csproj", "{11B3412F-456C-452E-94D2-B42D5C52F61C}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moq.CodeFixes", "src\Moq.CodeFixes\Moq.CodeFixes.csproj", "{8E99C15C-E80A-49E5-988C-1B5071CE775F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moq.CodeFixes", "src\CodeFixes\Moq.CodeFixes.csproj", "{8E99C15C-E80A-49E5-988C-1B5071CE775F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{013D4F80-9978-45DA-9BB8-6638239355E4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moq.Analyzers.Test.Analyzers", "tests\Moq.Analyzers.Test.Analyzers\Moq.Analyzers.Test.Analyzers.csproj", "{C68B6F38-838B-4BD9-963D-95779B6F418B}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "src\Common\Common.csproj", "{622DB72F-5609-4C08-838D-6937A680094A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -41,6 +43,10 @@ Global
{C68B6F38-838B-4BD9-963D-95779B6F418B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C68B6F38-838B-4BD9-963D-95779B6F418B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C68B6F38-838B-4BD9-963D-95779B6F418B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {622DB72F-5609-4C08-838D-6937A680094A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {622DB72F-5609-4C08-838D-6937A680094A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {622DB72F-5609-4C08-838D-6937A680094A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {622DB72F-5609-4C08-838D-6937A680094A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -53,4 +59,9 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8C917BC1-C0DE-4A46-BEE8-32FD66B447B1}
EndGlobalSection
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ src\Common\Common.projitems*{41ecc571-f586-460a-9bed-23528c8210c4}*SharedItemsImports = 5
+ src\Common\Common.projitems*{622db72f-5609-4c08-838d-6937a680094a}*SharedItemsImports = 5
+ src\Common\Common.projitems*{8e99c15c-e80a-49e5-988c-1b5071ce775f}*SharedItemsImports = 5
+ EndGlobalSection
EndGlobal
diff --git a/build/targets/codeanalysis/CodeAnalysis.targets b/build/targets/codeanalysis/CodeAnalysis.targets
index fecce5acc..9782fc6d6 100644
--- a/build/targets/codeanalysis/CodeAnalysis.targets
+++ b/build/targets/codeanalysis/CodeAnalysis.targets
@@ -3,6 +3,6 @@
$([MSBuild]::ValueOrDefault('$(ContinuousIntegrationBuild)', 'false'))
$(PedanticMode)
$(PedanticMode)
- $(PedanticMode)
+ $(PedanticMode)
diff --git a/src/Moq.Analyzers/AnalyzerReleases.Shipped.md b/src/Analyzers/AnalyzerReleases.Shipped.md
similarity index 100%
rename from src/Moq.Analyzers/AnalyzerReleases.Shipped.md
rename to src/Analyzers/AnalyzerReleases.Shipped.md
diff --git a/src/Moq.Analyzers/AnalyzerReleases.Unshipped.md b/src/Analyzers/AnalyzerReleases.Unshipped.md
similarity index 100%
rename from src/Moq.Analyzers/AnalyzerReleases.Unshipped.md
rename to src/Analyzers/AnalyzerReleases.Unshipped.md
diff --git a/src/Moq.Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs b/src/Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs
rename to src/Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs
diff --git a/src/Moq.Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.cs b/src/Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.cs
rename to src/Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.cs
diff --git a/src/Moq.Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs b/src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs
rename to src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs
diff --git a/src/Moq.Analyzers/GlobalSuppressions.cs b/src/Analyzers/GlobalSuppressions.cs
similarity index 100%
rename from src/Moq.Analyzers/GlobalSuppressions.cs
rename to src/Analyzers/GlobalSuppressions.cs
diff --git a/src/Moq.Analyzers/Moq.Analyzers.csproj b/src/Analyzers/Moq.Analyzers.csproj
similarity index 92%
rename from src/Moq.Analyzers/Moq.Analyzers.csproj
rename to src/Analyzers/Moq.Analyzers.csproj
index 10ecf8b60..342bfff14 100644
--- a/src/Moq.Analyzers/Moq.Analyzers.csproj
+++ b/src/Analyzers/Moq.Analyzers.csproj
@@ -27,8 +27,9 @@
+
+
-
@@ -40,7 +41,7 @@
-
+
diff --git a/src/Moq.Analyzers/NoMethodsInPropertySetupAnalyzer.cs b/src/Analyzers/NoMethodsInPropertySetupAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/NoMethodsInPropertySetupAnalyzer.cs
rename to src/Analyzers/NoMethodsInPropertySetupAnalyzer.cs
diff --git a/src/Moq.Analyzers/NoSealedClassMocksAnalyzer.cs b/src/Analyzers/NoSealedClassMocksAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/NoSealedClassMocksAnalyzer.cs
rename to src/Analyzers/NoSealedClassMocksAnalyzer.cs
diff --git a/src/Moq.Analyzers/Resources.Designer.cs b/src/Analyzers/Resources.Designer.cs
similarity index 100%
rename from src/Moq.Analyzers/Resources.Designer.cs
rename to src/Analyzers/Resources.Designer.cs
diff --git a/src/Moq.Analyzers/Resources.resx b/src/Analyzers/Resources.resx
similarity index 100%
rename from src/Moq.Analyzers/Resources.resx
rename to src/Analyzers/Resources.resx
diff --git a/src/Moq.Analyzers/SetExplicitMockBehaviorAnalyzer.cs b/src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/SetExplicitMockBehaviorAnalyzer.cs
rename to src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs
diff --git a/src/Moq.Analyzers/SetupShouldBeUsedOnlyForOverridableMembersAnalyzer.cs b/src/Analyzers/SetupShouldBeUsedOnlyForOverridableMembersAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/SetupShouldBeUsedOnlyForOverridableMembersAnalyzer.cs
rename to src/Analyzers/SetupShouldBeUsedOnlyForOverridableMembersAnalyzer.cs
diff --git a/src/Moq.Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.cs b/src/Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.cs
similarity index 100%
rename from src/Moq.Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.cs
rename to src/Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.cs
diff --git a/src/Moq.Analyzers/SquiggleCop.Baseline.yaml b/src/Analyzers/SquiggleCop.Baseline.yaml
similarity index 100%
rename from src/Moq.Analyzers/SquiggleCop.Baseline.yaml
rename to src/Analyzers/SquiggleCop.Baseline.yaml
diff --git a/src/Moq.Analyzers/tools/install.ps1 b/src/Analyzers/tools/install.ps1
similarity index 100%
rename from src/Moq.Analyzers/tools/install.ps1
rename to src/Analyzers/tools/install.ps1
diff --git a/src/Moq.Analyzers/tools/uninstall.ps1 b/src/Analyzers/tools/uninstall.ps1
similarity index 100%
rename from src/Moq.Analyzers/tools/uninstall.ps1
rename to src/Analyzers/tools/uninstall.ps1
diff --git a/src/Moq.CodeFixes/CallbackSignatureShouldMatchMockedMethodCodeFix.cs b/src/CodeFixes/CallbackSignatureShouldMatchMockedMethodCodeFix.cs
similarity index 100%
rename from src/Moq.CodeFixes/CallbackSignatureShouldMatchMockedMethodCodeFix.cs
rename to src/CodeFixes/CallbackSignatureShouldMatchMockedMethodCodeFix.cs
diff --git a/src/CodeFixes/Moq.CodeFixes.csproj b/src/CodeFixes/Moq.CodeFixes.csproj
new file mode 100644
index 000000000..d9a8dcc93
--- /dev/null
+++ b/src/CodeFixes/Moq.CodeFixes.csproj
@@ -0,0 +1,15 @@
+
+
+
+ Moq.CodeFixes
+ Moq.CodeFixes
+ netstandard2.0
+
+
+
+
+
+
+
+
+
diff --git a/src/Moq.CodeFixes/SquiggleCop.Baseline.yaml b/src/CodeFixes/SquiggleCop.Baseline.yaml
similarity index 99%
rename from src/Moq.CodeFixes/SquiggleCop.Baseline.yaml
rename to src/CodeFixes/SquiggleCop.Baseline.yaml
index 5a9f519a3..cfd419db8 100644
--- a/src/Moq.CodeFixes/SquiggleCop.Baseline.yaml
+++ b/src/CodeFixes/SquiggleCop.Baseline.yaml
@@ -1049,7 +1049,7 @@
- {Id: S2479, Title: Whitespace and control characters in string literals should be explicit, Category: Critical Code Smell, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: false}
- {Id: S2486, Title: Generic exceptions should not be ignored, Category: Minor Code Smell, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: false}
- {Id: S2551, Title: Shared resources should not be used for locking, Category: Critical Bug, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: false}
-- {Id: S2583, Title: Conditionally executed code should be reachable, Category: Major Bug, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: false}
+- {Id: S2583, Title: Conditionally executed code should be reachable, Category: Major Bug, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: true}
- {Id: S2589, Title: Boolean expressions should not be gratuitous, Category: Major Code Smell, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: true}
- {Id: S2612, Title: Setting loose file permissions is security-sensitive, Category: Major Security Hotspot, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: false}
- {Id: S2629, Title: Logging templates should be constant, Category: Major Code Smell, DefaultSeverity: Warning, IsEnabledByDefault: true, EffectiveSeverities: [Error], IsEverSuppressed: false}
diff --git a/src/Moq.Analyzers/Common/ArrayExtensions.cs b/src/Common/ArrayExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/ArrayExtensions.cs
rename to src/Common/ArrayExtensions.cs
diff --git a/src/Common/Common.csproj b/src/Common/Common.csproj
new file mode 100644
index 000000000..5a1087c77
--- /dev/null
+++ b/src/Common/Common.csproj
@@ -0,0 +1,36 @@
+
+
+
+
+
+ netstandard2.0
+ Moq.Analyzers.Common
+ $(RootNamespace)
+ false
+ false
+ false
+
+
+
+
+ false
+ true
+
+
+
+
+
+
+
+
diff --git a/src/Common/Common.projitems b/src/Common/Common.projitems
new file mode 100644
index 000000000..3eb732434
--- /dev/null
+++ b/src/Common/Common.projitems
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Moq.Analyzers/Common/CompilationExtensions.cs b/src/Common/CompilationExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/CompilationExtensions.cs
rename to src/Common/CompilationExtensions.cs
diff --git a/src/Moq.Analyzers/Common/CompilationOptionsExtensions.cs b/src/Common/CompilationOptionsExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/CompilationOptionsExtensions.cs
rename to src/Common/CompilationOptionsExtensions.cs
diff --git a/src/Moq.Analyzers/Common/DiagnosticCategory.cs b/src/Common/DiagnosticCategory.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/DiagnosticCategory.cs
rename to src/Common/DiagnosticCategory.cs
diff --git a/src/Moq.Analyzers/Common/DiagnosticExtensions.cs b/src/Common/DiagnosticExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/DiagnosticExtensions.cs
rename to src/Common/DiagnosticExtensions.cs
diff --git a/src/Moq.Analyzers/Common/DiagnosticIds.cs b/src/Common/DiagnosticIds.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/DiagnosticIds.cs
rename to src/Common/DiagnosticIds.cs
diff --git a/src/Moq.Analyzers/Common/EnumerableExtensions.cs b/src/Common/EnumerableExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/EnumerableExtensions.cs
rename to src/Common/EnumerableExtensions.cs
diff --git a/src/Moq.Analyzers/GlobalUsings.cs b/src/Common/GlobalUsings.cs
similarity index 100%
rename from src/Moq.Analyzers/GlobalUsings.cs
rename to src/Common/GlobalUsings.cs
diff --git a/src/Moq.Analyzers/Common/ISymbolExtensions.cs b/src/Common/ISymbolExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/ISymbolExtensions.cs
rename to src/Common/ISymbolExtensions.cs
diff --git a/src/Moq.Analyzers/Common/InvocationExpressionSyntaxExtensions.cs b/src/Common/InvocationExpressionSyntaxExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/InvocationExpressionSyntaxExtensions.cs
rename to src/Common/InvocationExpressionSyntaxExtensions.cs
diff --git a/src/Moq.Analyzers/Common/MoqMethodDescriptorBase.cs b/src/Common/MoqMethodDescriptorBase.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/MoqMethodDescriptorBase.cs
rename to src/Common/MoqMethodDescriptorBase.cs
diff --git a/src/Moq.Analyzers/MoqSetupMethodDescriptor.cs b/src/Common/MoqSetupMethodDescriptor.cs
similarity index 97%
rename from src/Moq.Analyzers/MoqSetupMethodDescriptor.cs
rename to src/Common/MoqSetupMethodDescriptor.cs
index ee81d8dc7..f8d1fb6bb 100644
--- a/src/Moq.Analyzers/MoqSetupMethodDescriptor.cs
+++ b/src/Common/MoqSetupMethodDescriptor.cs
@@ -1,4 +1,4 @@
-namespace Moq.Analyzers;
+namespace Moq.Analyzers.Common;
///
/// A class that, given a and a , determines if
diff --git a/src/Moq.Analyzers/Common/SemanticModelExtensions.cs b/src/Common/SemanticModelExtensions.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/SemanticModelExtensions.cs
rename to src/Common/SemanticModelExtensions.cs
diff --git a/src/Moq.Analyzers/Common/WellKnownTypeNames.cs b/src/Common/WellKnownTypeNames.cs
similarity index 100%
rename from src/Moq.Analyzers/Common/WellKnownTypeNames.cs
rename to src/Common/WellKnownTypeNames.cs
diff --git a/src/Moq.CodeFixes/Moq.CodeFixes.csproj b/src/Moq.CodeFixes/Moq.CodeFixes.csproj
deleted file mode 100644
index 6a8c09ceb..000000000
--- a/src/Moq.CodeFixes/Moq.CodeFixes.csproj
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- Moq.CodeFixes
- Moq.CodeFixes
- netstandard2.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj b/tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj
index 99cc58900..5e9bd272e 100644
--- a/tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj
+++ b/tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj b/tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj
index e5cfe8880..d3a9e656c 100644
--- a/tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj
+++ b/tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj b/tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj
index 6effaf6f2..eaebf1199 100644
--- a/tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj
+++ b/tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj
@@ -25,8 +25,8 @@
-
-
+
+
\ No newline at end of file