Skip to content

Remove ECS0200 suppression and update WellKnownTypes to not trigger ECS0600#236

Merged
rjmurillo merged 5 commits intomainfrom
bug/ecs-0600-fix
Oct 23, 2024
Merged

Remove ECS0200 suppression and update WellKnownTypes to not trigger ECS0600#236
rjmurillo merged 5 commits intomainfrom
bug/ecs-0600-fix

Conversation

@rjmurillo
Copy link
Copy Markdown
Owner

@rjmurillo rjmurillo commented Oct 23, 2024

Effective C# rules 0200 and 0600 have violations in src/Common/WellKnownTypeNames.cs. This change updates the members in WellKnownTypes type and their usages

Related to rjmurillo/EffectiveCSharp.Analyzers#73, see item for discussion

  • Updated constant declarations to static read-only fields for improved flexibility as referenced in ECS0200 and removed suppression.
  • Updated naming conventions for WellKnownTypes to avoid triggering ECS0600
  • Updated control flow in src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs to move from switch, which requires compile time constants, to a more traditional if/else
  • Updated names in the former WellKnownTypeNames type (now WellKnownMoqNames) with improved names and added documentation

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Oct 23, 2024

📝 Walkthrough

Walkthrough

The pull request introduces significant updates to various classes in the Moq.Analyzers namespace, including ConstructorArgumentsShouldMatchAnalyzer, MoqMethodDescriptorBase, and AsShouldBeUsedOnlyForInterfaceAnalyzer. Key changes involve restructuring logic for improved clarity in method implementations, updating identifiers to reflect new naming conventions, and removing the WellKnownTypeNames class in favor of a new WellKnownMoqNames class. These modifications enhance the analyzers' ability to accurately identify mock object creations and improve diagnostic reporting without altering public entity signatures.

Changes

File Path Change Summary
src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs - Replaced switch statement with if-else in AnalyzeInstanceCall for identifier checks.
- Updated identifier check in AnalyzeNewObject from WellKnownTypeNames.MockName to WellKnownMoqNames.MockTypeName.
src/Common/MoqMethodDescriptorBase.cs - Updated static string variables ContainingNamespace and ContainingType to use WellKnownMoqNames constants instead of WellKnownTypeNames.
src/Common/WellKnownTypeNames.cs - Entire class removed, eliminating various string constants related to Moq types.
src/Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs - Updated method name lookup from WellKnownTypeNames.As to WellKnownMoqNames.AsMethodName.
src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs - Changed type and method name retrieval to use fully qualified names from WellKnownMoqNames.
src/Common/CompilationExtensions.cs - Updated parameters in GetMoqMock method to use fully qualified type names from WellKnownMoqNames.
src/Common/WellKnownMoqNames.cs - New class added containing static readonly fields for Moq identifiers, including namespace, type names, and method names.

Possibly related PRs

  • Refactor to support RS1038 #216: This PR introduces a new project structure and updates references that may affect the analyzers, including the SetExplicitMockBehaviorAnalyzer, which is relevant to the changes in the main PR regarding mock behavior handling.
  • Add rule to explicitly pick MockBehavior #226: This PR adds a new rule to explicitly pick MockBehavior, which directly relates to the changes in the main PR that enhance the handling of mock object creation and behavior.
  • Add IOperation to DiagnosticExtensions and clean up overloads #233: This PR modifies diagnostic reporting methods, which aligns with the changes in the main PR that also focus on improving diagnostic reporting in the ConstructorArgumentsShouldMatchAnalyzer and other analyzers.
  • Bug/fix issue 144 #224: This PR includes updates to the CallbackSignatureShouldMatchMockedMethodCodeFixTests, which may relate to the changes in the main PR that enhance the clarity and efficiency of mock handling in analyzers.

Suggested labels

bug, documentation, feature

Suggested reviewers

  • MattKotsenas

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@codacy-production
Copy link
Copy Markdown

codacy-production bot commented Oct 23, 2024

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
+0.22% (target: -1.00%) 96.67% (target: 95.00%)
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (bbb213d) 601 538 89.52%
Head commit (8b16498) 614 (+13) 551 (+13) 89.74% (+0.22%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#236) 30 29 96.67%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Codacy stopped sending the deprecated coverage status on June 5th, 2024. Learn more

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Outside diff range comments (4)
src/Common/MoqMethodDescriptorBase.cs (1)

Line range hint 19-26: Add null checks to prevent NullReferenceException.

The methods IsInMoqNamespace and IsInMockType could throw NullReferenceException if the input symbol or its properties are null.

Add defensive null checks:

 private static bool IsInMoqNamespace(ISymbol symbol)
-    => symbol.ContainingNamespace.Name.AsSpan().SequenceEqual(ContainingNamespace.AsSpan());
+    => symbol?.ContainingNamespace?.Name is string name 
+       && name.AsSpan().SequenceEqual(ContainingNamespace.AsSpan());

 private static bool IsInMockType(ISymbol symbol)
-    => symbol.ContainingType.Name.AsSpan().SequenceEqual(ContainingType.AsSpan());
+    => symbol?.ContainingType?.Name is string name 
+       && name.AsSpan().SequenceEqual(ContainingType.AsSpan());
src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (3)

Line range hint 76-82: Fix potential ArgumentOutOfRangeException in IsFirstArgumentMockBehavior.

The method accesses argumentList?.Arguments[0] without checking if the Arguments collection is empty, which could throw an exception.

Apply this fix:

     private static bool IsFirstArgumentMockBehavior(SyntaxNodeAnalysisContext context, ArgumentListSyntax? argumentList)
     {
+        if (argumentList?.Arguments.Count == 0)
+        {
+            return false;
+        }
         ExpressionSyntax? expression = argumentList?.Arguments[0].Expression;
         return IsExpressionMockBehavior(context, expression);
     }

Line range hint 437-441: Add null check before accessing arguments in VerifyMockAttempt.

The code uses the null-coalescing operator but still accesses arguments array without checking if it's empty when hasMockBehavior is true.

Apply this fix:

     if (hasMockBehavior && arguments.Length > 0 && IsFirstArgumentMockBehavior(context, argumentList))
     {
         // They passed a mock behavior as the first argument; ignore as Moq swallows it
-        arguments = arguments.RemoveAt(0);
+        arguments = arguments.Length > 0 ? arguments.RemoveAt(0) : arguments;
     }

Line range hint 334-424: Consider simplifying complex constructor matching logic.

The AnyConstructorsFound method is quite complex and could be simplified to improve maintainability and reduce the risk of bugs.

Consider breaking down the method into smaller, focused methods:

  1. ValidateArgumentCount
  2. ValidateFixedParameters
  3. ValidateParamsParameters

This would make the code easier to test and maintain while reducing the cognitive complexity.

Example structure:

private static bool AnyConstructorsFound(
    IMethodSymbol[] constructors,
    ArgumentSyntax[] arguments,
    SyntaxNodeAnalysisContext context)
{
    return constructors.Any(constructor => 
        ValidateArgumentCount(constructor, arguments) &&
        ValidateFixedParameters(constructor, arguments, context) &&
        ValidateParamsParameters(constructor, arguments, context));
}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Files that changed from the base of the PR and between bbb213d and 06ea6bc.

📒 Files selected for processing (3)
  • src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (2 hunks)
  • src/Common/MoqMethodDescriptorBase.cs (1 hunks)
  • src/Common/WellKnownTypeNames.cs (1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Common/MoqMethodDescriptorBase.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Common/WellKnownTypeNames.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

🔇 Additional comments (5)
src/Common/WellKnownTypeNames.cs (3)

5-8: 🧹 Nitpick (assertive)

Consider the cross-assembly versioning implications of const to static readonly change.

While the change from const to static readonly addresses the ECS0200 rule, it has important implications:

  • Constants are embedded at compile-time in dependent assemblies
  • Static readonly fields require runtime lookup
  • This change makes the values more flexible but could affect cross-assembly version compatibility

Let's check for cross-assembly dependencies:


9-12: 🛠️ Refactor suggestion

Ensure initialization safety for interpolated strings.

The interpolated strings depend on other fields being properly initialized. While the C# runtime guarantees static field initialization order within a class, consider making these more robust:

Consider this alternative approach:

-    internal static readonly string MoqMock = $"{Moq}.{Mock}";
-    internal static readonly string MoqMock1 = $"{MoqMock}`1";
-    internal static readonly string MoqBehavior = $"{Moq}.{MockBehavior}";
-    internal static readonly string MoqRepository = $"{Moq}.MockRepository";
+    internal static readonly string MoqMock = string.Join(".", Moq, Mock);
+    internal static readonly string MoqMock1 = string.Concat(MoqMock, "`1");
+    internal static readonly string MoqBehavior = string.Join(".", Moq, MockBehavior);
+    internal static readonly string MoqRepository = string.Join(".", Moq, "MockRepository");

This approach:

  • Is more explicit about string concatenation
  • Provides better null-handling semantics
  • Maintains readability while being more robust

Likely invalid or redundant comment.


13-15: Verify method name constants match Moq's public API.

These method names are critical for the analyzer to correctly identify Moq API usage. Let's verify they match the actual API:

✅ Verification successful

Let me try a different approach to verify these method names in the codebase.


Based on the search results, I can now generate a final response.

Method name constants correctly match Moq's API

The search results confirm these method names are actively used in Moq's API:

  • As: Verified through AsShouldBeUsedOnlyForInterfaceAnalyzer.cs and documentation showing .As() is used for implementing multiple interfaces
  • Of: Verified through SetExplicitMockBehaviorAnalyzer.cs referencing Mock.Of() method
  • Create: While seen mostly in utility contexts, it appears to be a valid part of the API based on the analyzer implementations

The constants in WellKnownTypeNames.cs correctly represent these method names used throughout the codebase for analyzer matching purposes.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for these method names in Moq's public API
ast-grep --pattern 'public $_ As($$$) { $$$ }'
ast-grep --pattern 'public static $_ Create($$$) { $$$ }'
ast-grep --pattern 'public static $_ Of($$$) { $$$ }'

Length of output: 164


Script:

#!/bin/bash
# Search for these method names using ripgrep for broader coverage
echo "Searching for 'As' method:"
rg "\.As\(" -A 2 -B 2

echo -e "\nSearching for 'Create' method:"
rg "\.Create\(" -A 2 -B 2

echo -e "\nSearching for 'Of' method:"
rg "\.Of\(" -A 2 -B 2

# Also check test files as they often demonstrate API usage
echo -e "\nSearching in test files:"
fd -e test.cs -X rg "\.As\(|\.Create\(|\.Of\("

Length of output: 10975

src/Common/MoqMethodDescriptorBase.cs (1)

15-15: LGTM! The field rename maintains consistency.

The update from WellKnownTypeNames.MockName to WellKnownTypeNames.Mock aligns with the changes in the WellKnownTypeNames class.

src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (1)

293-293: LGTM! Verify usage of WellKnownTypeNames.Mock across the codebase.

The update to use WellKnownTypeNames.Mock is correct and maintains consistency with the type name changes.

Let's verify that this is the only occurrence that needs updating:

✅ Verification successful

Based on the search results, I can now generate the final response:

All usages of WellKnownTypeNames.Mock are consistent across the codebase

The verification shows that all references to WellKnownTypeNames.Mock are being used correctly in their respective contexts:

  • Constructor argument analysis in ConstructorArgumentsShouldMatchAnalyzer.cs
  • Method descriptor base configuration in Common/MoqMethodDescriptorBase.cs

No instances of outdated "MockName" were found, and all existing usages follow the same pattern using WellKnownTypeNames.Mock.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Search for any remaining occurrences of the old mock type name
# that might need to be updated for consistency

# Search for any remaining occurrences of "MockName" that might need updating
rg "MockName" --type cs

# Search for all usages of Mock to verify consistency
rg "WellKnownTypeNames\.Mock" --type cs

Length of output: 970

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Files that changed from the base of the PR and between 06ea6bc and 424f04d.

📒 Files selected for processing (1)
  • src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (2 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

🔇 Additional comments (2)
src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (2)

289-289: LGTM! The WellKnownTypeNames.Mock usage is correct.

The change properly aligns with the PR objective to update WellKnownTypes and maintains the correct string comparison behavior.


213-219: 🛠️ Refactor suggestion

Extract string comparisons to improve maintainability.

The string comparison logic could be extracted to a helper method to improve maintainability and reduce duplication. This aligns with the DRY principle and makes the code more readable.

+ private static bool IsMethodName(string value, string expectedName) => 
+     string.Equals(value, expectedName, StringComparison.Ordinal);

- if (string.Equals(genericNameSyntaxIdentifierValue, WellKnownTypeNames.Create, StringComparison.Ordinal))
+ if (IsMethodName(genericNameSyntaxIdentifierValue, WellKnownTypeNames.Create))
 {
     AnalyzeInvocation(context, invocationExpressionSyntax, WellKnownTypeNames.MockFactory, true, true);
 }
- else if (string.Equals(genericNameSyntaxIdentifierValue, WellKnownTypeNames.Of, StringComparison.Ordinal))
+ else if (IsMethodName(genericNameSyntaxIdentifierValue, WellKnownTypeNames.Of))
 {
     AnalyzeInvocation(context, invocationExpressionSyntax, WellKnownTypeNames.Mock, false, true);
 }

coderabbitai[bot]
coderabbitai bot previously approved these changes Oct 23, 2024
@rjmurillo rjmurillo added housekeeping analyzers Change that impacts an analyzer behavior and removed bug labels Oct 23, 2024
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Outside diff range comments (2)
src/Common/MoqMethodDescriptorBase.cs (2)

Line range hint 22-26: Add null checks and optimize string comparisons.

The string comparison methods lack null checks and make multiple string-to-span conversions. Consider:

  1. Adding null checks for parameters
  2. Caching the span conversions of static fields
+    // Cache the spans for better performance
+    private static readonly ReadOnlySpan<char> ContainingNamespaceSpan => ContainingNamespace.AsSpan();
+    private static readonly ReadOnlySpan<char> ContainingTypeSpan => ContainingType.AsSpan();

-    private static bool IsInMoqNamespace(ISymbol symbol) => 
-        symbol.ContainingNamespace.Name.AsSpan().SequenceEqual(ContainingNamespace.AsSpan());
+    private static bool IsInMoqNamespace(ISymbol symbol)
+    {
+        if (symbol?.ContainingNamespace?.Name is null)
+            return false;
+        return symbol.ContainingNamespace.Name.AsSpan().SequenceEqual(ContainingNamespaceSpan);
+    }

-    private static bool IsInMockType(ISymbol symbol) => 
-        symbol.ContainingType.Name.AsSpan().SequenceEqual(ContainingType.AsSpan());
+    private static bool IsInMockType(ISymbol symbol)
+    {
+        if (symbol?.ContainingType?.Name is null)
+            return false;
+        return symbol.ContainingType.Name.AsSpan().SequenceEqual(ContainingTypeSpan);
+    }

Line range hint 20-20: Add null check in IsFastMatch method.

The IsFastMatch method could throw NullReferenceException if memberAccessSyntax is null.

-    protected static bool IsFastMatch(MemberAccessExpressionSyntax memberAccessSyntax, ReadOnlySpan<char> methodName) => 
-        memberAccessSyntax.Name.Identifier.Text.AsSpan().SequenceEqual(methodName);
+    protected static bool IsFastMatch(MemberAccessExpressionSyntax memberAccessSyntax, ReadOnlySpan<char> methodName)
+    {
+        if (memberAccessSyntax?.Name?.Identifier.Text is null)
+            return false;
+        return memberAccessSyntax.Name.Identifier.Text.AsSpan().SequenceEqual(methodName);
+    }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Files that changed from the base of the PR and between 424f04d and a4e7819.

📒 Files selected for processing (3)
  • src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (3 hunks)
  • src/Common/MoqMethodDescriptorBase.cs (1 hunks)
  • src/Common/WellKnownTypeNames.cs (1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Common/MoqMethodDescriptorBase.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Common/WellKnownTypeNames.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

🪛 GitHub Check: Codacy Static Code Analysis
src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs

[failure] 217-217: src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs#L217
Add the missing 'else' clause with either the appropriate action or a suitable comment as to why no action is taken.

🔇 Additional comments (6)
src/Common/WellKnownTypeNames.cs (3)

5-6: LGTM! Clear separation of namespace and symbol name concerns.

The split into separate fields with explicit string literals better represents their distinct purposes and addresses the previous nameof() concerns.


7-9: LGTM! Appropriate use of nameof() for type names.

The use of nameof() is correct here as these represent actual type names, and the static readonly modifier provides the desired flexibility while maintaining immutability.


14-16: Verify the method name usage across the codebase.

The method names look correct, but let's verify they are used consistently for method symbol matching.

✅ Verification successful

Based on the results, I can now generate the final response as we have sufficient evidence about how these method names are used in the codebase.

Method names are correctly used for symbol matching across analyzers

The method names As, Create, and Of are consistently used for method symbol matching in various analyzers:

  • As is used in AsShouldBeUsedOnlyForInterfaceAnalyzer for identifying generic method symbols
  • Of is used in both SetExplicitMockBehaviorAnalyzer and ConstructorArgumentsShouldMatchAnalyzer for method identification
  • Create is used in ConstructorArgumentsShouldMatchAnalyzer for comparing method names

The usage aligns with their intended purpose as method symbol identifiers, and they are properly referenced using the WellKnownTypeNames class.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check how these method names are used in the codebase
# to ensure they are used for method symbol matching

echo "Checking usage of As, Create, and Of methods:"
rg -A 5 "WellKnownTypeNames\.(As|Create|Of)"

Length of output: 3062

src/Common/MoqMethodDescriptorBase.cs (1)

Line range hint 14-26: Verify the impact of null checks across the codebase.

Let's verify how these methods are used across the codebase to ensure the added null checks won't cause unexpected behavior.

src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (2)

208-211: Simplify the null check pattern.

This pattern can be more concise by combining it with the return statement.


Line range hint 289-300: LGTM! Type name reference updates are consistent.

The updates to use WellKnownTypeNames.Mock and WellKnownTypeNames.MoqSymbolName are consistent with the PR objectives and maintain the same behavior.

coderabbitai[bot]
coderabbitai bot previously approved these changes Oct 23, 2024
@qlty-cloud-legacy
Copy link
Copy Markdown

Code Climate has analyzed commit 8b16498 and detected 1 issue on this pull request.

Here's the issue category breakdown:

Category Count
Style 1

View more on Code Climate.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

🧹 Outside diff range comments (2)
src/Common/CompilationExtensions.cs (1)

Line range hint 26-38: Document the behavior when Moq types aren't found.

The XML documentation should clarify what happens when Moq isn't referenced in the compilation.

  /// <summary>
  /// Get the Moq.MockRepository, Moq.Mock and Moq.Mock`1 type symbols (if part of the compilation).
  /// </summary>
  /// <param name="compilation">The <see cref="Compilation"/> to inspect.</param>
  /// <returns>
  /// <see cref="INamedTypeSymbol"/>s for the Moq.Mock symbols that are part of the compilation.
- /// An empty array if none (never <see langword="null"/>).
+ /// An empty array if none of the types are found, which can happen when:
+ /// - Moq isn't referenced in the compilation
+ /// - Only some of the types are found due to version mismatches
+ /// The method never returns <see langword="null"/>.
  /// </returns>
src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs (1)

Line range hint 91-102: Potential bug: Analyzer might miss valid behavior specifications.

The analyzer only checks for behavior specified through field references (e.g., MockBehavior.Strict). It might miss cases where the behavior is specified through:

  1. Local variables
  2. Properties
  3. Method calls
  4. Constants

This could lead to false positives where the analyzer reports a warning even though the behavior is explicitly set.

Consider updating the argument checking logic to handle more cases. Here's a suggested approach:

 foreach (IArgumentOperation argument in creationOperation.Arguments)
 {
-    if (argument.Value is IFieldReferenceOperation fieldReferenceOperation)
+    if (argument.Value.Type?.IsInstanceOf(mockBehaviorSymbol) == true)
     {
-        ISymbol field = fieldReferenceOperation.Member;
-        if (field.ContainingType.IsInstanceOf(mockBehaviorSymbol) && IsExplicitBehavior(field.Name))
+        // If it's a field reference, check the name
+        if (argument.Value is IFieldReferenceOperation fieldRef &&
+            IsExplicitBehavior(fieldRef.Member.Name))
         {
             return;
         }
+        // If it's a property reference or method call, consider it explicit
+        if (argument.Value is IPropertyReferenceOperation or IMethodReferenceOperation)
+        {
+            return;
+        }
     }
 }

Apply the same changes to the AnalyzeInvocation method.

Also applies to: 121-132

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Files that changed from the base of the PR and between a4e7819 and 8b16498.

📒 Files selected for processing (7)
  • src/Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs (1 hunks)
  • src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (6 hunks)
  • src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs (2 hunks)
  • src/Common/CompilationExtensions.cs (1 hunks)
  • src/Common/MoqMethodDescriptorBase.cs (1 hunks)
  • src/Common/WellKnownMoqNames.cs (1 hunks)
  • src/Common/WellKnownTypeNames.cs (0 hunks)
💤 Files with no reviewable changes (1)
  • src/Common/WellKnownTypeNames.cs
🧰 Additional context used
📓 Path-based instructions (6)
src/Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Common/CompilationExtensions.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Common/MoqMethodDescriptorBase.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

src/Common/WellKnownMoqNames.cs (1)

Pattern **/*.cs: I need your help tracking down and fixing some bugs that have been reported in this codebase.

I suspect the bugs are related to:

  • Incorrect handling of edge cases
  • Off-by-one errors in loops or array indexing
  • Unexpected data types
  • Uncaught exceptions
  • Concurrency issues
  • Improper configuration settings

To diagnose:

  1. Review the code carefully and systematically
  2. Trace the relevant code paths
  3. Consider boundary conditions and potential error states
  4. Look for antipatterns that tend to cause bugs
  5. Run the code mentally with example inputs
  6. Think about interactions between components

When you find potential bugs, for each one provide:

  1. File path and line number(s)
  2. Description of the issue and why it's a bug
  3. Example input that would trigger the bug
  4. Suggestions for how to fix it

After analysis, please update the code with your proposed fixes. Try to match the existing code style. Add regression tests if possible to prevent the bugs from recurring.

I appreciate your diligence and attention to detail! Let me know if you need any clarification on the intended behavior of the code.

📓 Learnings (2)
src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs (1)
Learnt from: MattKotsenas
PR: rjmurillo/moq.analyzers#226
File: src/Moq.Analyzers/SetExplicitMockBehaviorAnalyzer.cs:45-49
Timestamp: 2024-10-15T20:25:09.079Z
Learning: In this codebase, `WellKnownTypeNames` is included via global usings.
src/Common/WellKnownMoqNames.cs (1)
Learnt from: MattKotsenas
PR: rjmurillo/moq.analyzers#226
File: src/Moq.Analyzers/SetExplicitMockBehaviorAnalyzer.cs:45-49
Timestamp: 2024-10-15T20:25:09.079Z
Learning: In this codebase, `WellKnownTypeNames` is included via global usings.
🔇 Additional comments (9)
src/Common/MoqMethodDescriptorBase.cs (1)

14-15: Verify complete migration from WellKnownTypeNames.

Let's ensure all references have been updated from WellKnownTypeNames to WellKnownMoqNames.

✅ Verification successful

Let me gather more context about the usage of WellKnownMoqNames to ensure the migration is complete and consistent.


Based on the comprehensive results, I can now provide the final response:

Migration from WellKnownTypeNames to WellKnownMoqNames is complete and consistent

The verification shows that:

  • No references to the old WellKnownTypeNames remain in the codebase
  • All usages consistently use WellKnownMoqNames with proper member access
  • The migration appears to be part of a well-executed refactoring, with WellKnownMoqNames being used consistently across multiple files including analyzers and common utilities
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify complete migration from WellKnownTypeNames to WellKnownMoqNames

# Test 1: Check for any remaining references to WellKnownTypeNames
echo "Checking for remaining WellKnownTypeNames references..."
rg "WellKnownTypeNames" -l

# Test 2: Verify consistent usage of new WellKnownMoqNames
echo "Verifying WellKnownMoqNames usage..."
rg "WellKnownMoqNames\.(MoqNamespace|MockTypeName)" -l

Length of output: 382


Script:

#!/bin/bash
# Let's examine the actual usage in both files to verify the consistency

echo "Checking usage in MoqMethodDescriptorBase.cs:"
rg "WellKnownMoqNames" src/Common/MoqMethodDescriptorBase.cs -B 1 -A 1

echo -e "\nChecking usage in ConstructorArgumentsShouldMatchAnalyzer.cs:"
rg "WellKnownMoqNames" src/Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs -B 1 -A 1

# Let's also check if there are any other similar "WellKnown" types in use
echo -e "\nChecking for other WellKnown types:"
rg "WellKnown\w+Names?" --type cs

Length of output: 5200

src/Common/CompilationExtensions.cs (1)

37-37: Verify WellKnownMoqNames constants exist in the codebase.

Let's ensure the new constants are properly defined and accessible.

✅ Verification successful

Let me gather more context about the WellKnownMoqNames class to ensure it's properly defined with all necessary components.


WellKnownMoqNames constants are properly defined and used correctly

The verification shows that:

  • The WellKnownMoqNames class is well-structured and properly defined
  • All required constants (FullyQualifiedMoqMockTypeName, FullyQualifiedMoqMock1TypeName, FullyQualifiedMoqRepositoryTypeName) are correctly defined using string interpolation
  • The base components (MoqNamespace and MockTypeName) are properly initialized
  • The class is well-documented with XML comments explaining each constant's purpose

The usage in CompilationExtensions.cs is correct and type-safe. No issues were found.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence and definition of WellKnownMoqNames constants

# Test 1: Find the WellKnownMoqNames class definition
echo "Searching for WellKnownMoqNames class definition..."
ast-grep --pattern 'class WellKnownMoqNames {
  $$$
}'

# Test 2: Find the specific constant definitions
echo "Searching for the specific constants..."
rg "FullyQualifiedMoqMockTypeName|FullyQualifiedMoqMock1TypeName|FullyQualifiedMoqRepositoryTypeName" -A 1

Length of output: 1174


Script:

#!/bin/bash
# Get the full content of WellKnownMoqNames.cs to verify the class structure and dependencies
echo "Full content of WellKnownMoqNames.cs:"
cat src/Common/WellKnownMoqNames.cs

# Check if MoqNamespace and MockTypeName are defined
echo -e "\nSearching for MoqNamespace and MockTypeName definitions:"
rg "MoqNamespace|MockTypeName" src/Common/WellKnownMoqNames.cs

Length of output: 3655

src/Common/WellKnownMoqNames.cs (3)

1-7: LGTM! Well-structured class declaration with clear documentation.

The class is appropriately scoped as internal static and follows good documentation practices.


57-74: LGTM! Well-documented method names.

The method name constants are clearly documented and follow the same pattern as the rest of the class.


1-74: Verify migration from WellKnownTypeNames.

Let's ensure all references to the old WellKnownTypeNames class have been updated to use WellKnownMoqNames.

✅ Verification successful

Based on the results, I can now generate the final response:

Migration from WellKnownTypeNames is complete

The verification shows that:

  • No references to the old WellKnownTypeNames class remain in the codebase
  • The new WellKnownMoqNames class is properly used across multiple files including:
    • ConstructorArgumentsShouldMatchAnalyzer.cs
    • SetExplicitMockBehaviorAnalyzer.cs
    • AsShouldBeUsedOnlyForInterfaceAnalyzer.cs
    • CompilationExtensions.cs
    • MoqMethodDescriptorBase.cs
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining references to WellKnownTypeNames

# Test: Search for WellKnownTypeNames references
echo "Checking for remaining references to WellKnownTypeNames..."
rg "WellKnownTypeNames"

# Test: Verify all files using the new WellKnownMoqNames
echo "Verifying usage of WellKnownMoqNames..."
rg "WellKnownMoqNames"

Length of output: 3040

src/Analyzers/AsShouldBeUsedOnlyForInterfaceAnalyzer.cs (2)

47-47: LGTM: Member name update is correct.

The change from WellKnownTypeNames.As to WellKnownMoqNames.AsMethodName aligns with the PR objectives to update naming conventions.


46-50: Verify thread safety of member lookup.

The code enables concurrent execution but performs member lookups that could potentially be affected by concurrent compilation changes.

Let's verify the thread safety implications:

src/Analyzers/SetExplicitMockBehaviorAnalyzer.cs (2)

54-54: LGTM! Verify the method name.

The change to use WellKnownMoqNames.OfMethodName is correct and maintains proper filtering for generic methods.

Let's verify the method name is correctly defined:

#!/bin/bash
# Description: Verify the method name for Mock.Of()
# Expected: Should find the constant definition in WellKnownMoqNames

# Test: Search for the constant definition
ast-grep --pattern 'public const string OfMethodName = $_'

45-45: LGTM! Verify the fully qualified type name.

The change to use WellKnownMoqNames.FullyQualifiedMoqBehaviorTypeName is correct and maintains proper null checking.

Let's verify the type name is correctly defined:

✅ Verification successful

Let me try a different approach to verify the type name definition.


Let me check the specific content of the WellKnownMoqNames.cs file to verify the constant definition.


The type name change is correctly implemented and verified

The change to use WellKnownMoqNames.FullyQualifiedMoqBehaviorTypeName is correct. The constant is properly defined in WellKnownMoqNames.cs as $"{MoqNamespace}.{MockBehaviorTypeName}" which resolves to "Moq.MockBehavior", the correct fully qualified name for the Moq behavior type.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the fully qualified type name for MockBehavior
# Expected: Should find the constant definition in WellKnownMoqNames

# Test: Search for the constant definition
ast-grep --pattern 'public const string FullyQualifiedMoqBehaviorTypeName = $_'

Length of output: 154


Script:

#!/bin/bash
# Search for files that might contain the WellKnownMoqNames class
fd "WellKnownMoqNames.cs"

# Search for any file containing MoqBehavior type name definition
rg -l "MoqBehavior" 

# Get content of any file containing WellKnownMoqNames
rg -A 5 "WellKnownMoqNames" 

Length of output: 8275


Script:

#!/bin/bash
# Get the content of WellKnownMoqNames.cs
cat src/Common/WellKnownMoqNames.cs

Length of output: 2828

@rjmurillo rjmurillo merged commit b5ea5d3 into main Oct 23, 2024
@rjmurillo rjmurillo deleted the bug/ecs-0600-fix branch October 23, 2024 20:30
mcj-coder pushed a commit to mcj-coder-org/claude-auto-resume that referenced this pull request Jan 13, 2026
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updated
[Meziantou.Analyzer](https://github.com/meziantou/Meziantou.Analyzer)
from 2.0.182 to 2.0.276.

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

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

## 2.0.276

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

## What's Changed
* Fix MA0182 false positive on types with DynamicallyAccessedMembers
attribute by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/963


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.275...2.0.276

## 2.0.275

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.274...2.0.275

## 2.0.274

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

## What's Changed
* Fix MA0182 to handle COM interop types with CoClass attribute by
@​Copilot in https://github.com/meziantou/Meziantou.Analyzer/pull/959


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.273...2.0.274

## 2.0.273

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

## What's Changed
* Fix MA0182 false positive for pointer type parameters by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/961


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.272...2.0.273

## 2.0.272

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

## What's Changed
* Extend MA0182 to all types by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/957


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.271...2.0.272

## 2.0.271

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

## What's Changed
* Add MA0182: Detect unused internal classes with correct handling of
generic type arguments and typeof references by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/956


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.270...2.0.271

## 2.0.270

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

## What's Changed
* Apply repository configuration by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/954


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.269...2.0.270

## 2.0.269

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

## What's Changed
* Apply repository configuration by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/953


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.268...2.0.269

## 2.0.268

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.267...2.0.268

## 2.0.267

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

## What's Changed
* Add MA0181 - Report use of explicit casts by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/952


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.266...2.0.267

## 2.0.266

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.265...2.0.266

## 2.0.265

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

## What's Changed
* Add refactoring: convert interpolated string to Format call by
@​meziantou in https://github.com/meziantou/Meziantou.Analyzer/pull/948


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.264...2.0.265

## 2.0.264

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

## What's Changed
* Lower global_level from -1 to -100 in editorconfig files by @​Copilot
in https://github.com/meziantou/Meziantou.Analyzer/pull/944


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.263...2.0.264

## 2.0.263

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

## What's Changed
* Add MA0180: Detect ILogger<T> type parameter mismatch with containing
class by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/941


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.262...2.0.263

## 2.0.262

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

## What's Changed
* Make DocumentationGenerator ignore trailing whitespace differences by
@​Copilot in https://github.com/meziantou/Meziantou.Analyzer/pull/942


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.261...2.0.262

## 2.0.261

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

## What's Changed
* Add MA0179: Detect inefficient attribute existence checks by @​Copilot
in https://github.com/meziantou/Meziantou.Analyzer/pull/939


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.260...2.0.261

## 2.0.260

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

## What's Changed
* Add concurrency control to serialize CI runs on main branch by
@​Copilot in https://github.com/meziantou/Meziantou.Analyzer/pull/938


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.259...2.0.260

## 2.0.259

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

## What's Changed
* Add opt-in configuration for MA0153 to detect logging of types
containing DataClassification members by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/936


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.258...2.0.259

## 2.0.258

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.257...2.0.258

## 2.0.257

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

## What's Changed
* Fix MA0042 to not flag SemaphoreSlim.Wait(0) as blocking by @​Copilot
in https://github.com/meziantou/Meziantou.Analyzer/pull/934


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.256...2.0.257

## 2.0.256

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

## What's Changed
* Clarify MA0093 only applies to event invocations, not regular method
calls by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/933


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.255...2.0.256

## 2.0.255

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

## What's Changed
* Use GlobalAnalyzerConfigFiles with global_level=-1 for analyzer
configuration by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/932


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.254...2.0.255

## 2.0.254

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

## What's Changed
* Add MA0178: Use TimeSpan.Zero instead of TimeSpan.FromXXX(0) by
@​Copilot in https://github.com/meziantou/Meziantou.Analyzer/pull/929


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.253...2.0.254

## 2.0.253

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.252...2.0.253

## 2.0.252

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

## What's Changed
* Updated `NamedParameterAnalyzer` to handle language version checks for
C# 14 by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/925


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.251...2.0.252

## 2.0.251

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

## What's Changed
* Add comprehensive CultureInsensitiveTypeAttribute documentation by
@​Copilot in https://github.com/meziantou/Meziantou.Analyzer/pull/922
* Update to .NET 10 by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/924


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.250...2.0.251

## 2.0.250

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

## What's Changed
* MA0011: Skip diagnostic for culture-invariant interpolated strings by
@​Copilot in https://github.com/meziantou/Meziantou.Analyzer/pull/919


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.249...2.0.250

## 2.0.249

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

## What's Changed
* Fix MA0095 to not report for CRTP-inherited IEquatable<T> by @​Copilot
in https://github.com/meziantou/Meziantou.Analyzer/pull/918


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.248...2.0.249

## 2.0.248

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

## What's Changed
* Update MA0053 to mention both class and record types by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/915


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.247...2.0.248

## 2.0.247

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

## What's Changed
* Update Roslyn dependencies and clean up PackageReferences by
@​meziantou in https://github.com/meziantou/Meziantou.Analyzer/pull/916


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.246...2.0.247

## 2.0.246

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.245...2.0.246

## 2.0.245

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

## What's Changed
* Fix MA0015 not detecting static ThrowIf methods on ArgumentException
and related types by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/912


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.244...2.0.245

## 2.0.244

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

## What's Changed
* Fix MA0011 not reported for types with ToString(IFormatProvider) but
no IFormattable by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/910


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.243...2.0.244

## 2.0.243

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

## What's Changed
* Add Roslyn analyzer for multiline XML comments by @​Copilot in
https://github.com/meziantou/Meziantou.Analyzer/pull/908

## New Contributors
* @​Copilot made their first contribution in
https://github.com/meziantou/Meziantou.Analyzer/pull/908

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.242...2.0.243

## 2.0.242

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.241...2.0.242

## 2.0.241

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.240...2.0.241

## 2.0.240

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

## What's Changed
* Add copilot instructions by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/907


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.239...2.0.240

## 2.0.239

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.238...2.0.239

## 2.0.238

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.237...2.0.238

## 2.0.237

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.236...2.0.237

## 2.0.236

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

## What's Changed
* Document members of CultureInsensitiveTypeAttribute. by @​drieseng in
https://github.com/meziantou/Meziantou.Analyzer/pull/902


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.235...2.0.236

## 2.0.235

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

## What's Changed
* Add support for culture-insensitive default formats by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/898


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.234...2.0.235

## 2.0.234

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.233...2.0.234

## 2.0.233

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.232...2.0.233

## 2.0.232

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.231...2.0.232

## 2.0.231

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

## What's Changed
* Improve support for culture-sensitive ToString and support null format
by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/893


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.230...2.0.231

## 2.0.230

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

## What's Changed
* Apply style suggestion by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/892


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.229...2.0.230

## 2.0.229

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.228...2.0.229

## 2.0.228

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.227...2.0.228

## 2.0.227

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.226...2.0.227

## 2.0.226

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.225...2.0.226

## 2.0.225

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

## What's Changed
* Document CA1849 as being similar to MA0042 by @​drieseng in
https://github.com/meziantou/Meziantou.Analyzer/pull/886
* Added support for analyzing methods with LoggerMessage attributes by
@​meziantou in https://github.com/meziantou/Meziantou.Analyzer/pull/888


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.224...2.0.225

## 2.0.224

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

## What's Changed
* New rule: MA0176 - Optimize guid creation by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/884


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.223...2.0.224

## 2.0.223

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

## What's Changed
* MA0016 skips conversion methods by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/883


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.222...2.0.223

## 2.0.222

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

## What's Changed
* docs: enhance MA0090 and MA0098 rule documentation by @​Meir017 in
https://github.com/meziantou/Meziantou.Analyzer/pull/874
* MA0042 fixer creates generic method call if generic method was called
by @​Griboedoff in
https://github.com/meziantou/Meziantou.Analyzer/pull/881

## New Contributors
* @​Griboedoff made their first contribution in
https://github.com/meziantou/Meziantou.Analyzer/pull/881

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.221...2.0.222

## 2.0.221

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

## What's Changed
* New rules: MA0174 and MA0175 by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/879


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.220...2.0.221

## 2.0.220

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

## What's Changed
* docs: Add multiple CA/MA analyzer rule mappings by @​Meir017 in
https://github.com/meziantou/Meziantou.Analyzer/pull/871
* Enhance MA0048 diagnostic messages with type information by @​Meir017
in https://github.com/meziantou/Meziantou.Analyzer/pull/873


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.219...2.0.220

## 2.0.219

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

## What's Changed
* Fix code block formatting in README.md by @​Meir017 in
https://github.com/meziantou/Meziantou.Analyzer/pull/865

## New Contributors
* @​Meir017 made their first contribution in
https://github.com/meziantou/Meziantou.Analyzer/pull/865

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.218...2.0.219

## 2.0.218

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.217...2.0.218

## 2.0.217

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.216...2.0.217

## 2.0.216

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

## What's Changed
* Make expression parsing more robust by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/830


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.215...2.0.216

## 2.0.215

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.214...2.0.215

## 2.0.214

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

## What's Changed
* Suggest using LazyInitializer instead of CompareExchange by
@​meziantou in https://github.com/meziantou/Meziantou.Analyzer/pull/828


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.213...2.0.214

## 2.0.213

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

## What's Changed
* Use Meziantou SDK by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/826


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.212...2.0.213

## 2.0.212

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

## What's Changed
* Add new rule to detect similar code in both side of a logical
operation by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/825


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.211...2.0.212

## 2.0.211

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

## What's Changed
* Fix for MA0077 for `ref struct` and improve MA0066 to detect
`WithComparers` by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/824


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.210...2.0.211

## 2.0.210

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

## What's Changed
* Use additional locations to report diagnostic on symbols with multiple
locations by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/821


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.209...2.0.210

## 2.0.209

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

## What's Changed
* Add MA0171: Replace HasValue with pattern matching by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/819


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.208...2.0.209

## 2.0.208

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.207...2.0.208

## 2.0.207

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

## What's Changed
* Apply repository configuration by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/817


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.206...2.0.207

## 2.0.206

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

## What's Changed
* Simplify msbuild properties by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/816


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.205...2.0.206

## 2.0.205

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

## What's Changed
* MA0053 takes ctor visibility into account to determine if a class
should be sealed by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/815


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.204...2.0.205

## 2.0.204

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

## What's Changed
* Convert sln to slnx by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/814


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.203...2.0.204

## 2.0.203

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.202...2.0.203

## 2.0.202

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

## What's Changed
* Add a rule to check parameters in attributes are valid by @​meziantou
in https://github.com/meziantou/Meziantou.Analyzer/pull/809


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.201...2.0.202

## 2.0.201

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.200...2.0.201

## 2.0.200

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

## What's Changed
* MA0169 - Detect equality operators that should be replaced with Equals
method by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/805


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.199...2.0.200

## 2.0.199

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.198...2.0.199

## 2.0.198

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

## What's Changed
* Add CODEOWNERS file by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/802


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.197...2.0.198

## 2.0.197

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

## What's Changed
* Add rule to detect non-readonly struct used for in or ref readonly
parameters by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/801


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.196...2.0.197

## 2.0.196

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

## What's Changed
* Add attribute to indicate a type is culture insensitive by @​meziantou
in https://github.com/meziantou/Meziantou.Analyzer/pull/799


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.195...2.0.196

## 2.0.195

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.194...2.0.195

## 2.0.194

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

## What's Changed
* Remove inaccessible local symbols by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/797


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.193...2.0.194

## 2.0.193

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

## What's Changed
* Fix OverloadFinder by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/795


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.192...2.0.193

## 2.0.192

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

## What's Changed
* Fix ArgumentOutOfRange in OverloadFinder by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/794


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.191...2.0.192

## 2.0.191

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

## What's Changed
* Add new rules to suggest using TimeProvider by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/792


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.190...2.0.191

## 2.0.190

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.189...2.0.190

## 2.0.189

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

## What's Changed
* Update the report location to be on method name and arguments instead
of the InvocationExpression by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/790


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.188...2.0.189

## 2.0.188

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

## What's Changed
* MA0002 skips IImmutableSet<string> by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/787


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.187...2.0.188

## 2.0.187

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

## What's Changed
* Fix MA0048 in case when first type is not first node by @​FrediKats in
https://github.com/meziantou/Meziantou.Analyzer/pull/785

## New Contributors
* @​FrediKats made their first contribution in
https://github.com/meziantou/Meziantou.Analyzer/pull/785

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.186...2.0.187

## 2.0.186

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

## What's Changed
* Align message to behavior for MA0157 by @​martindisch in
https://github.com/meziantou/Meziantou.Analyzer/pull/783

## New Contributors
* @​martindisch made their first contribution in
https://github.com/meziantou/Meziantou.Analyzer/pull/783

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.185...2.0.186

## 2.0.185

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

## What's Changed
* Allow to disable all rules using a property by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/781


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.184...2.0.185

## 2.0.184

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

## What's Changed
* Update global.json by @​meziantou in
https://github.com/meziantou/Meziantou.Analyzer/pull/778


**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.183...2.0.184

## 2.0.183

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

**Full Changelog**:
https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.182...2.0.183

Commits viewable in [compare
view](https://github.com/meziantou/Meziantou.Analyzer/compare/2.0.182...2.0.276).
</details>

Updated [Moq.Analyzers](https://github.com/rjmurillo/moq.analyzers) from
0.0.9 to 0.4.0.

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

_Sourced from [Moq.Analyzers's
releases](https://github.com/rjmurillo/moq.analyzers/releases)._

## 0.4.0

# Moq.Analyzers 0.4.0

Welcome to Moq.Analyzers 0.4.0! This major release brings significant
improvements to code quality analysis, introduces new analyzers for
better Moq usage patterns, and includes comprehensive updates to our
infrastructure and dependencies.

## ✨ Highlights

### New Analyzers

This release introduces three powerful new analyzers to help you write
better Moq tests:

- **[Moq1207]** - SetupSequence validation analyzer ensures sequential
setups are used correctly
- **[Moq1420]** - Times usage validation helps you use verification
times specifications properly
- **[Moq1500]** - Raise method validation catches incorrect event
argument patterns

### Enhanced Diagnostic Messages

We've improved diagnostic messages across all analyzers to include
specific type and member names, making it easier to identify and fix
issues. Every analyzer now provides clearer, more actionable feedback.

### Symbol-Based Detection

Replaced string-based detection with comprehensive symbol-based analysis
for the `Raises` method, improving accuracy and performance of
event-related analyzers.

### Infrastructure Modernization

- **Migrated to .NET 10 SDK** for the latest tooling improvements
- **ARM64 runners** for faster CI/CD on modern hardware
- **Enhanced performance testing** with nightly regression detection
- **Automated dependency management** with Renovate

## 🎯 Breaking Changes

### Minimum SDK Version

Moq.Analyzers now requires **minimum .NET SDK 8** for development. This
aligns with the long-term support release and enables us to leverage
modern C# features.

## 🔧 Analyzer Improvements

### Coverage Expansion

We've significantly expanded test coverage for all Moq patterns:

- **Event patterns**: Comprehensive coverage for `SetupAdd`,
`SetupRemove`, `Raises`, and `RaisesAsync`
- **Async methods**: Full support for `Task`/`ValueTask` patterns
- **LINQ to Mocks**: Complete validation of query expressions
- **MockRepository**: Validation for repository-based mock creation
- **Argument matching**: Coverage for all `It.*` and custom matcher
patterns
- **Protected members**: Validation for `.Protected().Setup()` patterns
- **Callback signatures**: Advanced callback pattern support including
generic scenarios

### Moq 4.16+ Compatibility
 ... (truncated)

## 0.3.1

## Minor Bug Fix

fix: exception in code fix of explicit mock behavior
(https://github.com/rjmurillo/moq.analyzers/pull/701) @​Youssef1313
#​701

**Full Changelog**:
https://github.com/rjmurillo/moq.analyzers/compare/v0.3.0...v0.3.1

## 0.3.0

Moq.Analyzers v0.3.0 🎄

Holidays are coming and it's time for the last release of the year! 🎉

There's a lot that has gone into this release, mostly housekeeping and
bug fixes that are transparent to you. However, there are two new
diagnostics included in this release.

This will be the last release until we move to **v1.0.0**

## Analyzer Behavior Changes

* Remove false positive for Moq1200 when using parameterized lambda by
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/301
* Add new rule to enforce MockBehavior.Strict (Moq1410) by @​rjmurillo
in https://github.com/rjmurillo/moq.analyzers/pull/302

## What's Changed
* Bump Nerdbank.GitVersioning from 3.6.143 to 3.6.146 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/232
* Bump Microsoft.Diagnostics.Tracing.TraceEvent from 3.1.15 to 3.1.16 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/228
* Add IOperation to DiagnosticExtensions and clean up overloads by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/233
* Bump nbgv from 3.6.143 to 3.6.146 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/230
* Bump Meziantou.Analyzer from 2.0.169 to 2.0.173 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/231
* Create a shared Common .projitems by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/235
* Remove ECS0200 suppression and update WellKnownTypes to not trigger
ECS0600 by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/236
* Add BannedApiAnalyzer and ban direct use of Diagnostic.Create by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/239
* Add *.props and *.targets to XML section of .editorconfig template by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/240
* Bump Meziantou.Analyzer from 2.0.173 to 2.0.175 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/237
* Remove dead suppressions and dead code by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/242
* Add rule suppression docs to README and each rule by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/241
* Bump Meziantou.Analyzer from 2.0.175 to 2.0.176 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/243
* Disable SquiggleCop for PerfDiff by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/244
* Bump Roslynator.Analyzers from 4.12.8 to 4.12.9 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/246
* Bump Verify.Xunit from 27.0.1 to 27.1.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/247
* Use WellKnownTypeProvider + KnownSymbols pattern to simplify analyzers
by @​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/245
* Bump Polyfill from 7.1.2 to 7.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/248
* Bump Verify.Xunit from 27.1.0 to 28.0.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/251
* Bump Meziantou.Analyzer from 2.0.176 to 2.0.177 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/249
* Bump Verify.Xunit from 28.0.0 to 28.1.3 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/253
* Bump Polyfill from 7.2.0 to 7.4.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/256
* Bump EffectiveCSharp.Analyzers from 0.1.0 to 0.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/250
* Bump Verify.Xunit from 28.1.3 to 28.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/257
* Update global.json to SDK 9 by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/263
* Bump Meziantou.Analyzer from 2.0.177 to 2.0.179 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/262
* Bump ReportGenerator from 5.3.11 to 5.4.1 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/264
* Bump Verify.Xunit from 28.2.0 to 28.3.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/265
* Remove forced lf in .editorconfig by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/271
* Reduce severity of S3267: Loops should be simplified with "LINQ"
expressions by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/272
* Bump GetPackFromProject to fix race in .NET 9 SDK by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/274
* Bump Polyfill from 7.4.0 to 7.5.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/270
* Move "upload binlogs" CI step earlier in pipeline and run even if
failed by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/273
* Bump Verify.Xunit from 28.3.0 to 28.3.2 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/269
* Bump Microsoft.CodeAnalysis.BannedApiAnalyzers from
3.11.0-beta1.24454.1 to 3.11.0-beta1.24508.2 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/268
* Bump Meziantou.Analyzer from 2.0.179 to 2.0.181 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/275
 ... (truncated)

## 0.3.0-alpha.1

This is a small update to include a bug fix for code analyzers crashing
in the IDE.

## Full list of What's Changed

* Add AnalyzerUtilities to NuGet package by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/326

**Full Changelog**:
https://github.com/rjmurillo/moq.analyzers/compare/v0.3.0-alpha...v0.3.0-alpha.1

## 0.3.0-alpha

Moq.Analyzers v0.3.0 🎄

Holidays are coming and it's time for the last release of the year! 🎉

There's a lot that has gone into this release, mostly housekeeping and
bug fixes that are transparent to you. However, there are two new
diagnostics included in this release.

This will be the last release until we move to **v1.0.0**

## Analyzer Behavior Changes

* Remove false positive for Moq1200 when using parameterized lambda by
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/301
* Add new rule to enforce MockBehavior.Strict (Moq1410) by @​rjmurillo
in https://github.com/rjmurillo/moq.analyzers/pull/302

## Full List of What's Changed
* Bump Nerdbank.GitVersioning from 3.6.143 to 3.6.146 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/232
* Bump Microsoft.Diagnostics.Tracing.TraceEvent from 3.1.15 to 3.1.16 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/228
* Add IOperation to DiagnosticExtensions and clean up overloads by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/233
* Bump nbgv from 3.6.143 to 3.6.146 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/230
* Bump Meziantou.Analyzer from 2.0.169 to 2.0.173 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/231
* Create a shared Common .projitems by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/235
* Remove ECS0200 suppression and update WellKnownTypes to not trigger
ECS0600 by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/236
* Add BannedApiAnalyzer and ban direct use of Diagnostic.Create by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/239
* Add *.props and *.targets to XML section of .editorconfig template by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/240
* Bump Meziantou.Analyzer from 2.0.173 to 2.0.175 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/237
* Remove dead suppressions and dead code by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/242
* Add rule suppression docs to README and each rule by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/241
* Bump Meziantou.Analyzer from 2.0.175 to 2.0.176 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/243
* Disable SquiggleCop for PerfDiff by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/244
* Bump Roslynator.Analyzers from 4.12.8 to 4.12.9 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/246
* Bump Verify.Xunit from 27.0.1 to 27.1.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/247
* Use WellKnownTypeProvider + KnownSymbols pattern to simplify analyzers
by @​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/245
* Bump Polyfill from 7.1.2 to 7.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/248
* Bump Verify.Xunit from 27.1.0 to 28.0.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/251
* Bump Meziantou.Analyzer from 2.0.176 to 2.0.177 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/249
* Bump Verify.Xunit from 28.0.0 to 28.1.3 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/253
* Bump Polyfill from 7.2.0 to 7.4.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/256
* Bump EffectiveCSharp.Analyzers from 0.1.0 to 0.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/250
* Bump Verify.Xunit from 28.1.3 to 28.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/257
* Update global.json to SDK 9 by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/263
* Bump Meziantou.Analyzer from 2.0.177 to 2.0.179 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/262
* Bump ReportGenerator from 5.3.11 to 5.4.1 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/264
* Bump Verify.Xunit from 28.2.0 to 28.3.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/265
* Remove forced lf in .editorconfig by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/271
* Reduce severity of S3267: Loops should be simplified with "LINQ"
expressions by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/272
* Bump GetPackFromProject to fix race in .NET 9 SDK by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/274
* Bump Polyfill from 7.4.0 to 7.5.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/270
* Move "upload binlogs" CI step earlier in pipeline and run even if
failed by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/273
* Bump Verify.Xunit from 28.3.0 to 28.3.2 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/269
* Bump Microsoft.CodeAnalysis.BannedApiAnalyzers from
3.11.0-beta1.24454.1 to 3.11.0-beta1.24508.2 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/268
* Bump Meziantou.Analyzer from 2.0.179 to 2.0.181 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/275
 ... (truncated)

## 0.2.0

## Changes
* Add rule to explicitly pick MockBehavior by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/226
* Fix false detection in Moq1201 in Moq 4.16.0 by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/224
* Fix false detection in Moq1200 using async tasks by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/221

## Housekeeping
* Add CODEOWNERS by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/193
* Bump Verify.Xunit from 26.2.0 to 26.4.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/197
* Bump Microsoft.NET.Test.Sdk from 17.11.0 to 17.11.1 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/196
* Bump DotNet.ReproducibleBuilds from 1.2.4 to 1.2.25 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/201
* Bump DotNet.ReproducibleBuilds.Isolated from 1.2.4 to 1.2.25 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/200
* Bump Verify.Xunit from 26.4.0 to 26.4.4 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/199
* Bump ReportGenerator from 5.3.8 to 5.3.9 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/195
* Update SDK to get newer version of Source Link by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/202
* Bump Verify.Xunit from 26.4.4 to 26.5.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/205
* Bump Roslynator.Analyzers from 4.12.4 to 4.12.5 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/204
* Bump Verify.Xunit from 26.5.0 to 26.6.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/207
* Bump Meziantou.Analyzer from 2.0.163 to 2.0.168 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/206
* Bump Roslynator.Analyzers from 4.12.5 to 4.12.6 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/209
* Bump ReportGenerator from 5.3.9 to 5.3.10 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/212
* Bump Roslynator.Analyzers from 4.12.6 to 4.12.7 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/213
* Bump Meziantou.Analyzer from 2.0.168 to 2.0.169 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/211
* Bump xunit from 2.9.0 to 2.9.2 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/210
* Use dotnet template for .gitattributes by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/215


**Full Changelog**:
https://github.com/rjmurillo/moq.analyzers/compare/v0.1.2...v0.2.0

## 0.1.2

## What's Changed

Lots of housekeeping and a couple of fixes and enhancements.

### Enhancements and Bug fixes

* Add Mock.Of<T> and MockRepository support to
ConstructorArgumentsShouldMatchAnalyzer by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/140
* Moq1100 incorrectly firing on nullable parameters by @​marcovr
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/187

### Other Changes

* Update version.json to 0.2.0 by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/142
* Remove CSharpGuidelinesAnalyzer and associated editorconfig values by
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/145
* Bump ReportGenerator from 5.3.6 to 5.3.7 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/138
* Bump Newtonsoft.Json from 13.0.1 to 13.0.3 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/134
* Bump Microsoft.Extensions.Logging from 6.0.0-preview.5.21301.5 to
8.0.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/132
* Bump Microsoft.Diagnostics.Tracing.TraceEvent from 3.0.2 to 3.1.12 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/131
* Bump Meziantou.Analyzer from 2.0.159 to 2.0.160 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/151
* Bump xunit from 2.8.1 to 2.9.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/148
* Bump xunit.runner.visualstudio from 2.8.1 to 2.8.2 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/149
* Bump Verify.Xunit from 25.0.4 to 25.3.1 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/152
* Bump SonarAnalyzer.CSharp from 9.28.0.94264 to 9.29.0.95321 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/154
* Bump Verify.Xunit from 25.3.1 to 25.3.2 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/158
* Bump Microsoft.Diagnostics.Tracing.TraceEvent from 3.1.12 to 3.1.13 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/157
* Bump Meziantou.Analyzer from 2.0.160 to 2.0.161 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/156
* Bump ReportGenerator from 5.3.7 to 5.3.8 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/155
* Bump Verify.Xunit from 25.3.2 to 26.1.5 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/164
* Bump Meziantou.Analyzer from 2.0.161 to 2.0.162 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/163
* Bump SonarAnalyzer.CSharp from 9.29.0.95321 to 9.30.0.95878 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/160
* Enable TreatWarningsAsErrors by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/165
* Disable rollForward for SDK in global.json by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/170
* Add SquiggleCop to baseline analyzer settings by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/166
* Bump Verify.Xunit from 26.1.5 to 26.1.6 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/168
* Bump Meziantou.Xunit.ParallelTestFramework from 2.2.0 to 2.3.0 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/169
* Bump Meziantou.Analyzer from 2.0.162 to 2.0.163 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/167
* Update SquiggleCop and remove ErrorLog property by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/174
* Bump SonarAnalyzer.CSharp from 9.30.0.95878 to 9.31.0.96804 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/175
* Bump Nerdbank.GitVersioning from 3.6.139 to 3.6.141 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/178
* Bump Verify.Xunit from 26.1.6 to 26.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/180
* Bump Microsoft.VisualStudio.Threading.Analyzers from 17.10.48 to
17.11.20 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/181
* Bump nbgv from 3.6.139 to 3.6.141 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/179
* Bump SquiggleCop.Tasks from 1.0.13 to 1.0.26 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/185
* Bump squigglecop.tool from 1.0.13 to 1.0.26 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/186
* Bump Microsoft.NET.Test.Sdk from 17.10.0 to 17.11.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/184
* Bump SonarAnalyzer.CSharp from 9.31.0.96804 to 9.32.0.97167 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/183
* Add Effective C# analyzers and update SquiggleCop baselines by
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/182
* Bump Nerdbank.GitVersioning from 3.6.141 to 3.6.143 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/189
* Bump Microsoft.Diagnostics.Tracing.TraceEvent from 3.1.13 to 3.1.15 by
@​dependabot in https://github.com/rjmurillo/moq.analyzers/pull/190
* Bump nbgv from 3.6.141 to 3.6.143 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/188
* Bump dependabot/fetch-metadata from 1.1.1 to 2.2.0 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/192
 ... (truncated)

## 0.1.1

Lots of "housekeeping" this release, and a few bug fixes. We also now
have rule documentation! Special thanks to @​MattKotsenas for his
contributions to make working on the analyzers easier and improving our
confidence and productivity.

**Full Changelog**:
https://github.com/rjmurillo/moq.analyzers/compare/v0.1.0...v0.1.1

## What's Changed

Ownership of the `Moq.Analyzers` and `Moq.Autocomplete` has been
transferred from @​Litee to @​rjmurillo.

### Bug fixes
* Moq1002: Update constructor checks by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/115. This resolves #​55
by @​MattKotsenas
* Refactor Moq1300 to use IOperation-based analysis by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/125

### Changes to rules
There _should_ be no behavioral differences with these changes to the
rule code. If you find any, please [submit a new
issue](https://github.com/rjmurillo/moq.analyzers/issues/new).

* Clean up README and add docs for each analyzer rule by @​MattKotsenas
in https://github.com/rjmurillo/moq.analyzers/pull/77
* Add analyzer release tracking by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/84
* Add cancellation tokens to methods that have a parameter but we don't
pass by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/52
* Enable ConcurrentExecution and disable generated code analysis by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/70
* Update code to remove warnings from backlog by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/73
* Remove RegEx from analyzers by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/81
* Remove period from analyzer messages and inline in the analyzer
classes by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/86


### Updates to test and infrastructure
* Refactor tests to simplify and inline test cases by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/57
* Update analysis mode and warning level to preview and 9999 by
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/59
* Extract code analysis to its own build slice and update analyzers to
latest versions by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/60
* Move test packages to build slice, update to latest version, and
enable parallel tests by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/61
* Replace our custom test harness with `Microsoft.CodeAnalysis` testing
harness by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/65
* Clean up of using statements by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/66
* Rename `master` to `main` by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/69
* Cache reference assemblies between tests to improve performance by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/71
* Convert from var to explicit type by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/74
* Refactor unit tests: data driven tests and leverage
`Microsoft.CodeAnalysis.Testing` patterns by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/76
* Add Code coverage report by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/79
* Fix `dotnet test` when not generating code coverage reports by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/80
* Refactor test cases to matrix on `Moq` version by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/82
* Fix SA0001: XML comment analysis is disabled due to project
configuration by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/87
* Fix trivial warnings by @​MattKotsenas in
https://github.com/rjmurillo/moq.analyzers/pull/88
* Update README.md to add leading and trailing pipes in table by
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/94
* Create dependabot.yml by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/93
* Update main.yml to add codacy test coverage by @​rjmurillo in
https://github.com/rjmurillo/moq.analyzers/pull/92
* Add more analyzers and bump `Meziantou.Analzer` to latest version by
@​rjmurillo in https://github.com/rjmurillo/moq.analyzers/pull/89
* Bump `Verify.Xunit` from 25.0.1 to 25.0.3 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/100
* Remove `Microsoft.CodeAnalysis.CSharp.Analyzer.Testing` by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/102
* Dependabot ignore packages that impact customer compatibility by
@​MattKotsenas in https://github.com/rjmurillo/moq.analyzers/pull/101
* Bump `Microsoft.CodeAnalysis.CSharp.CodeFix.Testing` from
1.1.2-beta1.24273.1 to 1.1.2-beta1.24314.1 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/103
* Bump `Nerdbank.GitVersioning` from 3.6.133 to 3.6.139 by @​dependabot
in https://github.com/rjmurillo/moq.analyzers/pull/99
* Bump `Meziantou.Analyzer` from 2.0.155 to 2.0.158 by @​dependabot in
https://github.com/rjmurillo/moq.analyzers/pull/96
 ... (truncated)

## 0.1.0

## What's Changed
* Remove the Visual Studio Extension VSIX by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/16
* Update TargetFramework to NET Standard 2.0 by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/17
* Update constructor analyzer (Moq1002) to validate parameters of
abstract classes by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/20, fixes #​1

### Non-functional Changes
* Create codeql.yml to analyze C# code by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/9
* Create a basic GitHub Actions pipeline by @​MattKotsenas in
https://github.com/Litee/moq.analyzers/pull/18
* Fix GitHub actions branch 'main' -> 'master' by @​MattKotsenas in
https://github.com/Litee/moq.analyzers/pull/21
* Use .NET 8 SDK's artifacts output and enable test reports in CI by
@​MattKotsenas in https://github.com/Litee/moq.analyzers/pull/23
* Update Moq.Analyzers.Test.csproj to NET 8 by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/24
* Migrate from ApprovalTests to Verify by @​MattKotsenas in
https://github.com/Litee/moq.analyzers/pull/25
* Update main.yml to upload .received on failure by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/34
* Add .nupkg baseline with Verify by @​MattKotsenas in
https://github.com/Litee/moq.analyzers/pull/30
* Add nbgv tool to automate versioning by @​MattKotsenas in
https://github.com/Litee/moq.analyzers/pull/35
* Add .gitattributes file and normalize line endings by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/33
* Add .editorconfig and enable code analysis by @​MattKotsenas in
https://github.com/Litee/moq.analyzers/pull/37
* Convert to Central Package Management with transitive pinning enabled
by @​MattKotsenas in https://github.com/Litee/moq.analyzers/pull/39
* Set package README, license expression, and development dependency by
@​MattKotsenas in https://github.com/Litee/moq.analyzers/pull/41
* Move usings to top of file and using file-scoped namespaces by
@​MattKotsenas in https://github.com/Litee/moq.analyzers/pull/40
* Follow reproducible builds best practices for package by
@​MattKotsenas in https://github.com/Litee/moq.analyzers/pull/44
* Remove package dependencies and don't publish analyzer as a lib by
@​MattKotsenas in https://github.com/Litee/moq.analyzers/pull/49
* Update Moq.Analyzers.csproj NuGet package metadata by @​rjmurillo in
https://github.com/Litee/moq.analyzers/pull/50

## New Contributors
* @​MattKotsenas made their first contribution in
https://github.com/Litee/moq.analyzers/pull/18

**Full Changelog**:
https://github.com/Litee/moq.analyzers/compare/v0.0.9...v0.1.0

Commits viewable in [compare
view](https://github.com/rjmurillo/moq.analyzers/compare/v0.0.9...v0.4.0).
</details>

Updated [Roslynator.Analyzers](https://github.com/dotnet/roslynator)
from 4.12.9 to 4.15.0.

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

_Sourced from [Roslynator.Analyzers's
releases](https://github.com/dotnet/roslynator/releases)._

## 4.15.0

### Added

- Add option
`roslynator_null_conditional_operator.avoid_negative_boolean_comparison`
([PR](https://github.com/dotnet/roslynator/pull/1688))
- Do not suggest to use null-conditional operator when result would be
`... != true/false`
- Applicable for
[RCS1146](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1146)

### Fixed

- Fix analyzer
[RCS1172](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1172)
([PR](https://github.com/dotnet/roslynator/pull/1710))
- [CLI] Fix `loc` command
([PR](https://github.com/dotnet/roslynator/pull/1711))
- Exclude ref-field backed properties from
[RCS1085](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1085)
([PR](https://github.com/dotnet/roslynator/pull/1718) by @​ovska)
- [CLI] Fix `rename-symbol` scope option not being applied correctly
([PR](https://github.com/dotnet/roslynator/pull/1720) by @​andrtmschkw)
- [CLI] Fix `rename-symbol` support for top-level statement
([PR](https://github.com/dotnet/roslynator/pull/1721) by @​andrtmschkw)

### Changed

- Migrate to .NET 10 (including command-line tool)
([PR](https://github.com/dotnet/roslynator/pull/1727))


## 4.14.1

### Added

- [CLI] Add support for `slnx` files
([PR](https://github.com/dotnet/roslynator/pull/1662) by @​darthtrevino)
  - Bump Roslyn to 4.14.0
  - Drop support for .NET 7 SDK

### Fixed

- Fix analyzer
[RCS1246](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1246)
([PR](https://github.com/dotnet/roslynator/pull/1676))
- Fix analyzer
[RCS1248](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1248)
([PR](https://github.com/dotnet/roslynator/pull/1677))
- Fix analyzer
[RCS1203](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1203)
([PR](https://github.com/dotnet/roslynator/pull/1683))
- Fix analyzer
[RCS1043](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1043)
([PR](https://github.com/dotnet/roslynator/pull/1684))
- Fix analyzer
[RCS1213](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1213)
([PR](https://github.com/dotnet/roslynator/pull/1686))
  - Add unity method `OnRectTransformDimensionsChange` 
- Fix analyzer
[RCS1253](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1253)
([PR](https://github.com/dotnet/roslynator/pull/1687))
- Fix refactoring [Check expression for
null](https://josefpihrt.github.io/docs/roslynator/refactorings/RR0024)
([PR](https://github.com/dotnet/roslynator/pull/1682))

### Changed

- Change behavior of analyzer
[RCS1206](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1206)
([PR](https://github.com/dotnet/roslynator/pull/1685))
- The condition for option `omit_when_single_line` will be that the
braces/brackets are on the same line, not just the expression in the
braces/brackets


## 4.14.0

### Added

- [CLI] Add support for GitLab analyzer reports
([PR](https://github.com/dotnet/roslynator/pull/1633))

### Fixed

- Fix analyzer
[RCS1264](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1264)
([PR](https://github.com/dotnet/roslynator/pull/1666))
- Fix analyzer
[RCS1229](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1229)
([PR](https://github.com/dotnet/roslynator/pull/1667))
- Fix analyzer
[RCS1250](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1250)
([PR](https://github.com/dotnet/roslynator/pull/1652) by @​aihnatiuk)
- Fix analyzer
[RCS1260](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1260)
([PR](https://github.com/dotnet/roslynator/pull/1668))
- Fix analyzer
[RCS1105](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1105)
([PR](https://github.com/dotnet/roslynator/pull/1669))
- Fix analyzer
[RCS1260](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1260)
([PR](https://github.com/dotnet/roslynator/pull/1672))

### Changed

- Disable analyzer
[RCS1036](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1036)
by default ([PR](https://github.com/dotnet/roslynator/pull/1671))
- Use analyzer
[RCS0063](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS0063)
instead

### Removed

- Remove legacy config options
([PR](https://github.com/dotnet/roslynator/pull/1304))


## 4.13.1

### Added

- Support custom path of a test file
([PR](https://github.com/dotnet/roslynator/pull/1609))
- It's possible to specify a directory path and/or a file name of a test
file.
  - Applies to testing library (Roslynator.Testing.*).

## 4.13.0

### Fixed

- Fix analyzer
[RCS1229](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1229)
([PR](https://github.com/dotnet/roslynator/pull/1618))
- Fix analyzer
[RCS1174](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1174)
([PR](https://github.com/dotnet/roslynator/pull/1619))
- Fix analyzer
[RCS0010](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS0010)
([PR](https://github.com/dotnet/roslynator/pull/1620))
- Fix analyzer
[RCS0005](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS0005)
([PR](https://github.com/dotnet/roslynator/pull/1621))

### Added

- Add analyzer "Put expression body on its own line"
[RCS0062](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS0062)
([PR](https://github.com/dotnet/roslynator/pull/1593) by @​cbersch)
- Affects analyzer
[RCS1016](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1016)
- Affects refactoring
[RR0169](https://josefpihrt.github.io/docs/roslynator/refactorings/RR0169)

### Changed

- Move analyzer
[RCS1036](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1036)
to Formatting.Analyzers as
[RCS0063](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS0063)
([PR](https://github.com/dotnet/roslynator/pull/1600))
  - Old analyzer still works but is marked as obsolete.
- Bump Roslyn to 4.12.0
([PR](https://github.com/dotnet/roslynator/pull/1623))
    - Applies to CLI and testing library.
- Bump `Microsoft.Build.Locator` to 1.7.8
([PR](https://github.com/dotnet/roslynator/pull/1622))

## 4.12.11

### Added

- [CLI] Add support for .NET 9
([PR](https://github.com/dotnet/roslynator/pull/1605))

### Fixed

- Fix refactoring 'Change accessibility'
([RR0186](https://josefpihrt.github.io/docs/roslynator/refactorings/RR0186))
([PR](https://github.com/dotnet/roslynator/pull/1599))
- Fix analyzer
[RCS1264](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1264)
([PR](https://github.com/dotnet/roslynator/pull/1604))

### Changed

- Move `DiagnosticRules` and `DiagnosticIdentifiers` to
`Roslynator.Common`
([PR](https://github.com/dotnet/roslynator/pull/1597))


## 4.12.10

### Fixed

- Fix analyzer
[RCS1213](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1213)
([PR](https://github.com/dotnet/roslynator/pull/1586))
- Improve code fixe…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

analyzers Change that impacts an analyzer behavior bug housekeeping releasable

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants