Add IOperation to DiagnosticExtensions and clean up overloads#233
Conversation
📝 WalkthroughWalkthroughThe pull request introduces modifications across several analyzer classes in the Changes
Possibly related PRs
Suggested labels
Suggested reviewers
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? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
Code Climate has analyzed commit c8c5dee and detected 5 issues on this pull request. Here's the issue category breakdown:
View more on Code Climate. |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Outside diff range comments (5)
src/Moq.Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.cs (2)
Line range hint
23-24: Consider addressing the suppressed maintainability warning.The suppression message references issue #90 for tracking the refactoring. Consider breaking down the
Analyzemethod into smaller, focused methods to improve maintainability. Here's a suggested structure:- private static void Analyze(SyntaxNodeAnalysisContext context) + private static void Analyze(SyntaxNodeAnalysisContext context) + { + if (ShouldSkipAnalysis(context)) + return; + + var setupInvocation = (InvocationExpressionSyntax)context.Node; + var mockedMember = GetMockedMember(context, setupInvocation); + if (mockedMember == null) + return; + + if (IsInvalidAsyncSetup(context, mockedMember)) + { + ReportDiagnostic(context, mockedMember); + } + } + + private static bool ShouldSkipAnalysis(SyntaxNodeAnalysisContext context) + { + var moqAssembly = context.Compilation.ReferencedAssemblyNames + .FirstOrDefault(a => a.Name.Equals("Moq", StringComparison.OrdinalIgnoreCase)); + return moqAssembly != null && moqAssembly.Version >= new Version(4, 16, 0); + }
Line range hint
25-31: Document why analysis is skipped for Moq 4.16.0+.The code skips analysis for Moq 4.16.0 or later, but it's not clear why. Consider adding a comment explaining if this issue was fixed in that version or if there's another reason for skipping the analysis.
+ // Skip analysis for Moq 4.16.0 or later as this issue was fixed in that version + // See: [link to relevant Moq issue/PR] if (moqAssembly != null && moqAssembly.Version >= new Version(4, 16, 0)) { return; }src/Moq.Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.cs (1)
Line range hint
54-56: Add null check for setupInvocationThe code dereferences
setupInvocationwithout checking if it's null, which could cause a NullReferenceException.Apply this fix:
- InvocationExpressionSyntax? mockedMethodInvocation = setupInvocation.FindMockedMethodInvocationFromSetupMethod(); + if (setupInvocation == null) return; + InvocationExpressionSyntax? mockedMethodInvocation = setupInvocation.FindMockedMethodInvocationFromSetupMethod();src/Moq.Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (2)
Line range hint
160-164: Consider enhancing the diagnostic message format.While the refactoring to simplify diagnostic creation is good, the diagnostic message could be more specific about the provided arguments to help developers quickly identify the issue.
Consider formatting the arguments list for better readability in the diagnostic message:
- Diagnostic? diagnostic = argumentList?.CreateDiagnostic(InterfaceMustNotHaveConstructorParameters, argumentList); + string formattedArgs = string.Join(", ", arguments.Select(arg => arg.ToString())); + Diagnostic? diagnostic = argumentList?.CreateDiagnostic(InterfaceMustNotHaveConstructorParameters, formattedArgs);
Line range hint
335-341: Fix bug in optional parameters check.There's a logical issue in the constructor matching condition that could cause false negatives when matching constructors with all optional parameters. The current condition can never be true due to contradictory requirements.
Apply this fix to correctly handle constructors with all optional parameters:
- if (arguments.Length <= requiredParameters - && arguments.Length == 0 - && requiredParameters == 0 - && fixedParametersCount != 0) + if (arguments.Length == 0 && requiredParameters == 0)This simplified condition correctly handles the case where:
- No arguments are provided (
arguments.Length == 0)- All parameters are optional (
requiredParameters == 0)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
📒 Files selected for processing (5)
- src/Moq.Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.cs (2 hunks)
- src/Moq.Analyzers/Common/DiagnosticExtensions.cs (3 hunks)
- src/Moq.Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (2 hunks)
- src/Moq.Analyzers/SetExplicitMockBehaviorAnalyzer.cs (2 hunks)
- src/Moq.Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.cs (1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
src/Moq.Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.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:
- Review the code carefully and systematically
- Trace the relevant code paths
- Consider boundary conditions and potential error states
- Look for antipatterns that tend to cause bugs
- Run the code mentally with example inputs
- Think about interactions between components
When you find potential bugs, for each one provide:
- File path and line number(s)
- Description of the issue and why it's a bug
- Example input that would trigger the bug
- 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/Moq.Analyzers/Common/DiagnosticExtensions.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:
- Review the code carefully and systematically
- Trace the relevant code paths
- Consider boundary conditions and potential error states
- Look for antipatterns that tend to cause bugs
- Run the code mentally with example inputs
- Think about interactions between components
When you find potential bugs, for each one provide:
- File path and line number(s)
- Description of the issue and why it's a bug
- Example input that would trigger the bug
- 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/Moq.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:
- Review the code carefully and systematically
- Trace the relevant code paths
- Consider boundary conditions and potential error states
- Look for antipatterns that tend to cause bugs
- Run the code mentally with example inputs
- Think about interactions between components
When you find potential bugs, for each one provide:
- File path and line number(s)
- Description of the issue and why it's a bug
- Example input that would trigger the bug
- 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/Moq.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:
- Review the code carefully and systematically
- Trace the relevant code paths
- Consider boundary conditions and potential error states
- Look for antipatterns that tend to cause bugs
- Run the code mentally with example inputs
- Think about interactions between components
When you find potential bugs, for each one provide:
- File path and line number(s)
- Description of the issue and why it's a bug
- Example input that would trigger the bug
- 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/Moq.Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.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:
- Review the code carefully and systematically
- Trace the relevant code paths
- Consider boundary conditions and potential error states
- Look for antipatterns that tend to cause bugs
- Run the code mentally with example inputs
- Think about interactions between components
When you find potential bugs, for each one provide:
- File path and line number(s)
- Description of the issue and why it's a bug
- Example input that would trigger the bug
- 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 (12)
src/Moq.Analyzers/Common/DiagnosticExtensions.cs (3)
8-8: LGTM! Changes to SyntaxNode overloads are well-structured.The standardization of using
nullinstead of empty collections simplifies the code while maintaining the same behavior. The method chaining is correct and preserves the diagnostic creation hierarchy.Also applies to: 14-14, 21-27
32-32: LGTM! Location overloads maintain proper fallback behavior.The changes consistently use
nullfor optional parameters while preserving the important fallback toLocation.Nonefor non-source locations.Also applies to: 38-38, 52-52
55-71: 🛠️ Refactor suggestionConsider adding null checks and documentation for IOperation overloads.
While the implementation follows the established pattern, there are a few potential improvements:
- The code should handle cases where
operationoroperation.Syntaxis null- The relationship between
IOperationand its underlyingSyntaxshould be documentedConsider applying these changes:
public static Diagnostic CreateDiagnostic( this IOperation operation, DiagnosticDescriptor rule, IEnumerable<Location>? additionalLocations, ImmutableDictionary<string, string?>? properties, - params object?[]? messageArgs) => operation.Syntax.CreateDiagnostic(rule, additionalLocations, properties, messageArgs); + params object?[]? messageArgs) +{ + if (operation is null) + throw new ArgumentNullException(nameof(operation)); + + // Fall back to Location.None if we can't get valid syntax + var syntax = operation.Syntax ?? throw new ArgumentException("Operation must have associated syntax", nameof(operation)); + return syntax.CreateDiagnostic(rule, additionalLocations, properties, messageArgs); +}And add XML documentation:
/// <summary> /// Creates a diagnostic from an IOperation instance. /// </summary> /// <remarks> /// This method uses the underlying syntax node of the operation to create the diagnostic. /// This ensures that the diagnostic is reported at the correct source location. /// </remarks> /// <exception cref="ArgumentNullException">Thrown when operation is null.</exception> /// <exception cref="ArgumentException">Thrown when operation has no associated syntax.</exception>src/Moq.Analyzers/SetupShouldNotIncludeAsyncResultAnalyzer.cs (1)
66-66: LGTM! Simplified diagnostic creation.The change aligns with the PR objectives by simplifying the diagnostic creation process while maintaining the same behavior.
src/Moq.Analyzers/SetExplicitMockBehaviorAnalyzer.cs (5)
101-101: LGTM: Simplified diagnostic creation.The change to use
CreateDiagnosticdirectly on the operation is correct and aligns with the PR objectives of simplifying diagnostic creation.
129-129: LGTM: Simplified diagnostic creation.The change to use
CreateDiagnosticdirectly on the operation is correct and aligns with the PR objectives of simplifying diagnostic creation.
Line range hint
25-31: Verify thread safety of compilation analysis registration.The analyzer correctly enables concurrent execution with
EnableConcurrentExecution(). However, we should verify that the compilation analysis registration is thread-safe, particularly around the caching of mock types and behavior symbols.Let's check for any shared state or potential race conditions:
✅ Verification successful
Let me try a different approach to verify thread safety by looking at the analyzer's implementation more comprehensively.
Based on the analyzer's implementation, I can now provide a final response about the thread safety concern:
The analyzer implementation is thread-safe
The implementation shows good thread-safety practices:
- All fields are static and readonly (
Title,Message,Rule,SupportedDiagnostics)- No shared mutable state exists in the analyzer class
- Compilation-specific symbols (
mockTypes,mockBehaviorSymbol,ofMethods) are scoped to each compilation analysis context- Analysis operations are stateless and work only with the data passed through their parameters
The caching of mock types and behavior symbols is handled safely within the scope of each compilation analysis context, with no shared state between different analysis operations.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Look for field declarations that might indicate shared state ast-grep --pattern 'class SetExplicitMockBehaviorAnalyzer { $$$ private $_* $_* = $_*; $$$ }'Length of output: 101
Script:
#!/bin/bash # Look for the full analyzer class implementation to check field declarations and analysis registration rg -U "class SetExplicitMockBehaviorAnalyzer" -A 100 --type csLength of output: 14882
Line range hint
71-99: Consider handling null argument values in mock behavior detection.The argument analysis in
AnalyzeNewObjectassumes non-null values when checking for field references. While the current implementation works for standard cases, it might not handle edge cases where argument values are null.Let's check if there are any tests covering null argument scenarios:
Consider adding null checks:
foreach (IArgumentOperation argument in creationOperation.Arguments) { + if (argument?.Value == null) continue; if (argument.Value is IFieldReferenceOperation fieldReferenceOperation) { + if (fieldReferenceOperation.Member == null) continue; ISymbol field = fieldReferenceOperation.Member; if (field.ContainingType.IsInstanceOf(mockBehaviorSymbol) && IsExplicitBehavior(field.Name)) { return; } } }
Line range hint
138-140: Consider using StringComparison.OrdinalIgnoreCase for behavior names.The
IsExplicitBehaviormethod currently uses case-sensitive comparison. While the current implementation works with the standard Moq API, it might miss custom-defined behaviors or different casing variations.Let's verify if there are any custom behavior definitions in the codebase:
Consider updating to:
private static bool IsExplicitBehavior(string symbolName) { - return string.Equals(symbolName, "Loose", StringComparison.Ordinal) || string.Equals(symbolName, "Strict", StringComparison.Ordinal); + return string.Equals(symbolName, "Loose", StringComparison.OrdinalIgnoreCase) || string.Equals(symbolName, "Strict", StringComparison.OrdinalIgnoreCase); }src/Moq.Analyzers/CallbackSignatureShouldMatchMockedMethodAnalyzer.cs (2)
61-62: LGTM: Diagnostic creation simplificationThe changes simplify diagnostic creation by using the extension method directly on syntax nodes instead of first getting their locations. This maintains the same functionality while making the code more concise.
Also applies to: 99-100
Line range hint
104-134: Verify handling of generic type parameters and user-defined conversionsThe type conversion logic handles basic scenarios well, but there might be edge cases with generic type parameters or user-defined conversion operators that could cause false positives/negatives.
Let's verify the handling of these cases:
✅ Verification successful
Let me gather more specific information about the test cases and implementations.
Let me gather one final piece of information about the CustomType implementation in the tests.
Based on the gathered evidence, I can now provide the final response:
Type conversion handling is properly implemented and tested
The implementation correctly handles all important conversion scenarios:
- The test suite includes comprehensive cases for generic type parameters (e.g.,
List<string>)- User-defined conversions are properly tested with
CustomTypethat includes both implicit (inttoCustomType) and explicit (stringtoCustomType) operators- The analyzer correctly handles nullable types (verified by test case with
object?)- The test cases confirm proper handling of:
- Identity conversions (same types)
- Implicit conversions (including user-defined ones)
- Explicit conversions
- Generic type parameters
The original concern about potential edge cases with generic type parameters and user-defined conversions is unfounded, as the test suite demonstrates robust handling of these scenarios.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for test cases involving generic parameters and user-defined conversions rg -l "It\.IsAny<" . ast-grep --pattern 'class $_ { $$$ static explicit operator $_($_ $_) { $$$ } $$$ }'Length of output: 380
Script:
#!/bin/bash # Check test cases in CallbackSignatureShouldMatchMockedMethodCodeFixTests.cs rg -A 10 "It\.IsAny<" ./tests/Moq.Analyzers.Test/CallbackSignatureShouldMatchMockedMethodCodeFixTests.cs # Look for test cases specifically testing conversion scenarios rg -A 10 "Conversion|Convert" ./tests/Moq.Analyzers.Test/CallbackSignatureShouldMatchMockedMethodCodeFixTests.cs # Check for generic type parameter handling in the analyzer ast-grep --pattern 'class CallbackSignatureShouldMatchMockedMethodAnalyzer { $$$ private static bool HasConversion($_) { $$$ } }'Length of output: 7685
Script:
#!/bin/bash # Look for CustomType implementation in test files rg -A 15 "class CustomType" ./tests/Moq.Analyzers.Test/CallbackSignatureShouldMatchMockedMethodCodeFixTests.csLength of output: 594
src/Moq.Analyzers/ConstructorArgumentsShouldMatchAnalyzer.cs (1)
Line range hint
142-146: LGTM! Verify extension method implementation.The simplified diagnostic creation maintains the same functionality while reducing code complexity. The change is safe as it preserves null handling through the null-conditional operator.
Let's verify the extension method implementation:
✅ Verification successful
Let's try a different search strategy to locate the extension method implementation.
LGTM! The extension method implementation is safe and correct.
The search results show that
CreateDiagnosticis properly implemented insrc/Moq.Analyzers/Common/DiagnosticExtensions.cs. The extension method:
- Correctly handles location tracking by calling
GetLocation()internally- Provides multiple overloads to handle different input types (SyntaxNode, Location, IOperation)
- Maintains proper null safety through optional parameters
- Preserves all diagnostic information including additional locations and properties
The refactoring in
ConstructorArgumentsShouldMatchAnalyzer.csis using this well-implemented extension method, which makes the code more concise while maintaining the same functionality.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the CreateDiagnostic extension method implementation # to ensure it properly handles location tracking internally # Search for the CreateDiagnostic extension method definition ast-grep --pattern 'public static $_ CreateDiagnostic($_) { $$$ }'Length of output: 70
Script:
#!/bin/bash # Search for files containing "CreateDiagnostic" method rg -l "CreateDiagnostic" # Then search for the actual implementation with context rg "CreateDiagnostic" -A 5 -B 2Length of output: 15629
[//]: # (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…
This is a small, preparatory refactoring change. No behavior differences.
IOperationoverload toDiagnosticExtensionsto simplify creating diagnosticsnullfor optional parameters instead of a mix of nulls and empty collections.CreateDiagnostic()calls to simplify code slightly