Skip to content

Create a shared Common .projitems#235

Merged
MattKotsenas merged 3 commits intorjmurillo:mainfrom
MattKotsenas:refactor/common-project
Oct 22, 2024
Merged

Create a shared Common .projitems#235
MattKotsenas merged 3 commits intorjmurillo:mainfrom
MattKotsenas:refactor/common-project

Conversation

@MattKotsenas
Copy link
Copy Markdown
Collaborator

@MattKotsenas MattKotsenas commented Oct 22, 2024

This is another preparatory refactoring change. The intention is to make it easier to share both files and settings across the analyzers and code fixes by using a shared Common.projitems file.

To make editing the common files easier, there's also a Common.csproj project, however that's marked as not packable / publishable. Visual Studio has its own .shproj format for these types of projects, but they have several disadvantages:

  1. They aren't SDK-style
  2. They don't work with modern refactoring motions (as experienced when using in them in SquiggleCop)
  3. I haven't tried them in Rider?

A simple project sidesteps all these issues at the expense of compiling an extra .dll that's unused.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Oct 22, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The pull request modifies the project structure of the Moq.Analyzers.sln solution by updating project paths and adding a new project. The paths for existing projects Moq.Analyzers and Moq.CodeFixes have been changed to Analyzers and CodeFixes, respectively. A new project named Common has been added, and the solution configuration has been updated accordingly. Additionally, shared project files have been referenced, and several project files have been updated to reflect these structural changes.

Changes

File Path Change Summary
Moq.Analyzers.sln Updated project paths for Moq.Analyzers and Moq.CodeFixes; added new project Common.
src/Analyzers/Moq.Analyzers.csproj Added import for shared project file; updated project reference path.
src/CodeFixes/Moq.CodeFixes.csproj New project file created for Moq.CodeFixes, targeting .NET Standard 2.0.
src/Common/Common.csproj New project file created for Common, targeting .NET Standard 2.0, with specific project settings.
src/Common/Common.projitems New project file created to include C# source files conditionally.
src/Common/MoqSetupMethodDescriptor.cs Namespace changed from Moq.Analyzers to Moq.Analyzers.Common.
src/Moq.CodeFixes/Moq.CodeFixes.csproj Project file removed, indicating discontinuation of the Moq.CodeFixes project.
tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj Updated project reference path for Moq.Analyzers.
tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj Updated project reference path for Moq.Analyzers.
tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj Updated project reference paths for Moq.Analyzers and Moq.Analyzers.Test.Analyzers.

Possibly related PRs

Suggested labels

dependencies, build, feature

Suggested reviewers

  • rjmurillo

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Files that changed from the base of the PR and between 1577d0d and 6c20348.

📒 Files selected for processing (4)
  • .gitattributes (1 hunks)
  • build/targets/codeanalysis/CodeAnalysis.targets (1 hunks)
  • src/CodeFixes/SquiggleCop.Baseline.yaml (1 hunks)
  • src/Common/Common.csproj (1 hunks)
🧰 Additional context used
🔇 Additional comments (9)
build/targets/codeanalysis/CodeAnalysis.targets (1)

6-6: LGTM! Good improvement in property initialization.

The addition of the condition Condition=" '$(SquiggleCop_Enabled)' == '' " follows MSBuild best practices by allowing the property to be overridden in other build files while maintaining the default behavior. This change provides more flexibility in configuring SquiggleCop across different projects.

src/Common/Common.csproj (4)

16-23: LGTM! Properties align with project objectives.

The configuration correctly sets up a non-packable shared project targeting .NET Standard 2.0.


25-29: LGTM! Shared project settings are appropriate.

The settings ensure explicit control over shared items while maintaining visibility.


31-36: Verify project references and imports.

The configuration looks correct, but let's verify:

  1. The existence of Common.projitems
  2. The RepoRoot variable definition
  3. Consistency of Microsoft.CodeAnalysis.CSharp version across projects
✅ Verification successful

Let me generate the final response since we have gathered sufficient information to verify all the concerns:

Project references and imports are correctly configured

All verification checks passed successfully:

  • Common.projitems exists at the expected location: src/Common/Common.projitems
  • RepoRoot variable is defined in Directory.Build.props
  • Microsoft.CodeAnalysis.CSharp package reference is consistent across related projects:
    • Used with PrivateAssets="all" in analyzer projects (src/Common, src/Analyzers)
    • Workspaces variant used in test projects and code fixes
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify project configuration

# Test 1: Check if Common.projitems exists
echo "Checking for Common.projitems..."
fd --type f "Common.projitems$"

# Test 2: Look for RepoRoot variable definition
echo -e "\nChecking for RepoRoot variable definition..."
rg -l "RepoRoot" --glob "Directory.Build.*"

# Test 3: Check Microsoft.CodeAnalysis.CSharp versions across projects
echo -e "\nChecking Microsoft.CodeAnalysis.CSharp versions..."
rg --type xml "PackageReference.*Microsoft\.CodeAnalysis\.CSharp" --glob "*.csproj"

Length of output: 1571


3-14: 🧹 Nitpick (assertive)

Consider enhancing the documentation with metadata.

The documentation clearly explains the design decisions. Consider adding:

  <!--
+   Created: PR #235 - October 2024
+   
    NOTE: This project is not intended to be referenced directly. The common components should instead be compiled

Likely invalid or redundant comment.

.gitattributes (3)

111-113: LGTM: Verify test files configuration is properly set.

The configuration ensures consistent line endings (LF) and UTF-8 encoding for Verify test output files across all platforms, which is crucial for reliable snapshot testing.


114-115: LGTM: SquiggleCop baseline configuration follows best practices.

The configuration enforces LF line endings for the SquiggleCop baseline file, ensuring consistent behavior across different platforms and IDEs.


117-118: LGTM: VS Code JSON files are properly configured for GitHub.

The linguist-language=JSON-with-Comments setting ensures correct syntax highlighting for VS Code JSON files on GitHub, improving readability of configuration files.

src/CodeFixes/SquiggleCop.Baseline.yaml (1)

1052-1052: 🧹 Nitpick (assertive)

Consider the implications of globally suppressing code flow analysis rules.

The changes suppress two important code analysis rules:

  • S2583: Conditionally executed code should be reachable
  • S2589: Boolean expressions should not be gratuitous

While this may reduce noise from known cases, globally suppressing these rules could hide real issues with unreachable code and redundant boolean expressions.

Consider a more targeted approach using:

  1. File-level suppressions where needed
  2. Inline suppressions with justification comments for specific cases
  3. Custom rule severity levels instead of complete suppression

Run this script to check for potential impacts:

✅ Verification successful

Let me try a different approach to verify the impact of suppressing these rules by searching for the rule IDs in the codebase and understanding their usage context.


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

Global rule suppression is justified by existing pragma usage

The search results reveal that these rules are already being suppressed with pragmas in specific cases where the analyzer produces false positives:

  1. S2583 is suppressed in src/Common/ArrayExtensions.cs for a legitimate array length check
  2. S2589 is suppressed in src/Common/SemanticModelExtensions.cs for a necessary null check after a Debug.Assert

The global suppression in SquiggleCop.Baseline.yaml appears to be a formalization of these existing suppressions, which are well-documented and used sparingly. The codebase shows disciplined use of these suppressions only where necessary, with clear comments explaining the rationale.

Additionally, the configuration exists in multiple baseline files across different project components (src/Analyzers, src/CodeFixes, tests), suggesting this is a deliberate standardization of the analyzer configuration across the project.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for potential unreachable code and redundant boolean expressions that would be missed
# Description: Look for if conditions that are always true/false and redundant boolean checks
ast-grep --pattern 'if ($_ == true) { $$$ }'
ast-grep --pattern 'if ($_ == false) { $$$ }'
ast-grep --pattern 'if ($x) { $$$ } else { $$$ }'

Length of output: 146


Script:

#!/bin/bash
# Search for references to these rule IDs in the codebase
echo "=== Searching for S2583 references ==="
rg "S2583" -B 2 -A 2

echo -e "\n=== Searching for S2589 references ==="
rg "S2589" -B 2 -A 2

echo -e "\n=== Looking for other analyzer configuration files ==="
fd -e yaml -e yml -e config -e json | grep -i "analyz\|rule\|diagnostic"

echo -e "\n=== Checking if these rules are part of a specific analyzer ==="
rg -l "S2583|S2589" | grep -i "sonar\|analyzer\|diagnostic"

Length of output: 17381


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.

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: 4

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

Line range hint 8-10: Consider making MethodName constant readonly.

The MethodName field is effectively constant and used for comparison. Making it private const would better express its intent and potentially allow for compile-time optimizations.

-    private static readonly string MethodName = "Setup";
+    private const string MethodName = "Setup";
🧰 Tools
🪛 GitHub Check: Codacy Static Code Analysis

[failure] 1-1: src/Common/MoqSetupMethodDescriptor.cs#L1
Provide an 'AssemblyVersion' attribute for assembly 'srcassembly.dll'.


Line range hint 13-31: Add parameter validation and consider edge cases.

The IsMatch method lacks null checks for its parameters and might have edge cases around cancellation.

Consider adding these safety checks:

 public override bool IsMatch(SemanticModel semanticModel, MemberAccessExpressionSyntax memberAccessSyntax, CancellationToken cancellationToken)
 {
+    if (semanticModel is null)
+        throw new ArgumentNullException(nameof(semanticModel));
+    if (memberAccessSyntax is null)
+        throw new ArgumentNullException(nameof(memberAccessSyntax));
+
+    // Check for cancellation early
+    cancellationToken.ThrowIfCancellationRequested();
+
     if (!IsFastMatch(memberAccessSyntax, MethodName.AsSpan()))
     {
         return false;
     }

     ISymbol? symbol = semanticModel.GetSymbolInfo(memberAccessSyntax, cancellationToken).Symbol;
+    
+    // Check for cancellation after potentially long operation
+    cancellationToken.ThrowIfCancellationRequested();
🧰 Tools
🪛 GitHub Check: Codacy Static Code Analysis

[failure] 1-1: src/Common/MoqSetupMethodDescriptor.cs#L1
Provide an 'AssemblyVersion' attribute for assembly 'srcassembly.dll'.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Files that changed from the base of the PR and between 7053d96 and 1577d0d.

📒 Files selected for processing (10)
  • Moq.Analyzers.sln (3 hunks)
  • src/Analyzers/Moq.Analyzers.csproj (2 hunks)
  • src/CodeFixes/Moq.CodeFixes.csproj (1 hunks)
  • src/Common/Common.csproj (1 hunks)
  • src/Common/Common.projitems (1 hunks)
  • src/Common/MoqSetupMethodDescriptor.cs (1 hunks)
  • src/Moq.CodeFixes/Moq.CodeFixes.csproj (0 hunks)
  • tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj (1 hunks)
  • tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj (1 hunks)
  • tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj (1 hunks)
💤 Files with no reviewable changes (1)
  • src/Moq.CodeFixes/Moq.CodeFixes.csproj
🧰 Additional context used
📓 Path-based instructions (1)
src/Common/MoqSetupMethodDescriptor.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/Common/MoqSetupMethodDescriptor.cs

[failure] 1-1: src/Common/MoqSetupMethodDescriptor.cs#L1
Provide an 'AssemblyVersion' attribute for assembly 'srcassembly.dll'.

🔇 Additional comments (18)
src/Common/Common.projitems (1)

1-5: Verify the integration with consuming projects.

The shared items setup looks correct, but we should verify:

  1. That consuming projects properly import this .projitems file
  2. That the ShowCommonFiles property is properly set where needed

Let's check the project references:

✅ Verification successful

Let me gather more information about how these projects are using the Common.projitems file.


Based on the gathered information, I can now provide the final response:

✅ The shared project integration is properly configured

The verification shows that:

  • Both Moq.Analyzers.csproj and Moq.CodeFixes.csproj correctly import the Common.projitems file using <Import Project="$(RepoRoot)/src/Common/Common.projitems" Label="Shared" />
  • The ShowCommonFiles property is properly set to 'true' in Common.csproj, which serves as a reference implementation
  • The RepoRoot property is correctly defined in Directory.Build.props, ensuring the import paths work correctly
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify .projitems integration in other projects

# Test 1: Find all project files that might reference this .projitems
echo "Checking for .projitems references in project files..."
fd -e csproj -e props | xargs grep -l "Common.projitems"

# Test 2: Check if ShowCommonFiles property is defined
echo "Checking for ShowCommonFiles property definition..."
fd -e csproj -e props | xargs grep -l "ShowCommonFiles"

Length of output: 464


Script:

#!/bin/bash
# Check the actual content of the project files to understand the integration

echo "=== Content of Moq.Analyzers.csproj ==="
cat "src/Analyzers/Moq.Analyzers.csproj"

echo -e "\n=== Content of Moq.CodeFixes.csproj ==="
cat "src/CodeFixes/Moq.CodeFixes.csproj"

echo -e "\n=== Content of Common.csproj ==="
cat "src/Common/Common.csproj"

# Also check for Directory.Build.props as it might contain global properties
echo -e "\n=== Checking for Directory.Build.props ==="
fd "Directory.Build.props" | xargs cat

Length of output: 5528

tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj (2)

14-14: LGTM! Path structure change improves consistency.

The updated project reference using $(RepoRoot) and forward slashes is a good change that:

  • Provides consistent path resolution across the solution
  • Works cross-platform (Windows/Linux/macOS)
  • Aligns with the PR's goal of better organization

14-14: Verify $(RepoRoot) property is defined.

The project reference now uses $(RepoRoot), which requires this property to be defined in the build environment or a common props file.

✅ Verification successful

Let's try to find XML files first and then search within them.


$(RepoRoot) property is properly defined and used consistently

The $(RepoRoot) property is correctly defined in Directory.Build.props at the solution root as $(MSBuildThisFileDirectory). This property is widely used across multiple projects in the solution, including:

  • src/Analyzers/Moq.Analyzers.csproj
  • src/CodeFixes/Moq.CodeFixes.csproj
  • src/Common/Common.csproj
  • tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj
  • tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj
  • tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj

The usage of $(RepoRoot) in the project reference is safe and follows the solution-wide convention.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if $(RepoRoot) is defined in any .props files or the solution's Directory.Build.props

# Test: Search for RepoRoot property definition
rg -l "RepoRoot" --type xml

Length of output: 176


Script:

#!/bin/bash
# First, find all XML files including props, csproj, etc.
echo "=== Finding all XML files ==="
fd -e xml -e props -e csproj

# Then search for RepoRoot in these files
echo -e "\n=== Searching for RepoRoot in XML files ==="
fd -e xml -e props -e csproj -x grep -l "RepoRoot" {} \;

# Also check the content of Directory.Build.props if it exists
echo -e "\n=== Content of Directory.Build.props if exists ==="
fd "Directory.Build.props" -x cat {}

Length of output: 1951

src/CodeFixes/Moq.CodeFixes.csproj (3)

1-15: LGTM! The project file is well-structured.

The project file correctly implements the requirements for a code fix project and aligns with the PR objectives of sharing common files across analyzers and code fixes.


13-13: Verify RepoRoot property definition.

The import statement uses $(RepoRoot) variable. Let's verify its definition to ensure correct path resolution.

#!/bin/bash
# Description: Check RepoRoot property definition
# Expected: Find RepoRoot in Directory.Build.props or similar files

# Look for files that might define RepoRoot
fd -e props -e targets | xargs rg -l "RepoRoot"

9-11: Verify package version management.

The package reference looks correct with appropriate PrivateAssets setting. However, let's verify how the version is managed.

✅ Verification successful

Let's examine the content of Directory.Packages.props to verify the version management.


Package version is properly managed centrally

The package version management is well-implemented:

  • Version is centrally managed in Directory.Packages.props
  • Microsoft.CodeAnalysis.CSharp.Workspaces is pinned to version 4.3.1
  • The version choice is documented with clear rationale regarding SDK compatibility
  • Central package version management is enabled with transitive pinning
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if package versions are centrally managed
# Expected: Find version management in Directory.Build.props or similar files

# Look for files that might contain package versions
fd -e props -e targets | xargs rg -l "Microsoft.CodeAnalysis.CSharp.Workspaces"

Length of output: 381


Script:

#!/bin/bash
# Check the content of Directory.Packages.props for version management
cat Directory.Packages.props

Length of output: 1946

tests/Moq.Analyzers.Benchmarks/Moq.Analyzers.Benchmarks.csproj (1)

10-10: LGTM! Project reference path updated correctly.

The path update aligns with the project restructuring, maintaining consistency across the solution.

Let's verify the project reference path exists:

✅ Verification successful

Since the fd command successfully found the project file at src/Analyzers/Moq.Analyzers.csproj, which matches exactly with the path referenced in the project file (when combined with the $(RepoRoot) variable), I can now generate the final response:

✅ Project reference path verified and exists

The project reference path $(RepoRoot)/src/Analyzers/Moq.Analyzers.csproj is valid and points to an existing project file in the repository.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the project reference path exists
# Expected: The project file should exist at the new location

fd -p "src/Analyzers/Moq.Analyzers.csproj$"

Length of output: 80

src/Common/MoqSetupMethodDescriptor.cs (1)

1-1: Verify namespace change impact across the solution.

The namespace change from Moq.Analyzers to Moq.Analyzers.Common looks good and aligns with the shared component structure. However, we should verify that all references to this class have been updated.

✅ Verification successful

Let me try a different approach to verify the namespace change impact by searching for any references to the class name and analyzing the using statements more broadly.


Let me check the other file that references this class to ensure the namespace change is properly handled.


Based on the gathered evidence, I can now provide the final response:

Namespace change to Moq.Analyzers.Common is correctly implemented

The namespace change has been properly implemented and all references are consistent:

  • Both MoqSetupMethodDescriptor.cs and SemanticModelExtensions.cs use the new Moq.Analyzers.Common namespace
  • No references to the old namespace Moq.Analyzers.MoqSetupMethodDescriptor were found in the codebase
  • The class is only used internally within the Common directory, and all usages are properly scoped
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Find any remaining references to the old namespace that might need updating

# Search for old namespace usage
echo "Searching for old namespace references..."
rg "Moq\.Analyzers\.MoqSetupMethodDescriptor" -l

# Search for any using statements that might need updating
echo "Checking using statements..."
rg "using\s+Moq\.Analyzers;" -l

Length of output: 244


Script:

#!/bin/bash
# Search for any references to MoqSetupMethodDescriptor class
echo "Searching for class references..."
rg "MoqSetupMethodDescriptor" -l

# Search for files that might be using this class
echo "Searching for potential usage files..."
fd ".*\.cs$" --exec grep -l "using.*Moq\.Analyzers"

# Get content of the class file to understand its usage
echo "Content of MoqSetupMethodDescriptor.cs:"
cat src/Common/MoqSetupMethodDescriptor.cs

Length of output: 3147


Script:

#!/bin/bash
# Check the content of the other file referencing MoqSetupMethodDescriptor
echo "Content of SemanticModelExtensions.cs:"
cat src/Common/SemanticModelExtensions.cs

# Check if there are any references to the old namespace in the test files
echo "Checking test files for old namespace references:"
rg "Moq\.Analyzers\.MoqSetupMethodDescriptor" ./tests

Length of output: 5411

🧰 Tools
🪛 GitHub Check: Codacy Static Code Analysis

[failure] 1-1: src/Common/MoqSetupMethodDescriptor.cs#L1
Provide an 'AssemblyVersion' attribute for assembly 'srcassembly.dll'.

tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj (1)

28-29: LGTM! Verify the updated project paths.

The project reference paths have been updated to use $(RepoRoot) consistently, which is a good practice for path resolution. The changes align with the project restructuring objectives.

Let's verify the existence of the referenced projects:

✅ Verification successful

Project reference paths verified successfully

Both referenced projects exist at their specified locations:

  • src/Analyzers/Moq.Analyzers.csproj
  • tests/Moq.Analyzers.Test.Analyzers/Moq.Analyzers.Test.Analyzers.csproj
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the referenced project files exist at the new locations

# Test: Check if the Moq.Analyzers project exists
fd --type f "Moq.Analyzers.csproj" src/Analyzers

# Test: Check if the test analyzers project exists
fd --type f "Moq.Analyzers.Test.Analyzers.csproj" tests/Moq.Analyzers.Test.Analyzers

Length of output: 239

src/Common/Common.csproj (3)

1-14: LGTM! Well-documented design decisions.

The documentation clearly explains the trade-offs between different approaches (NoTargets, .shproj, current solution).

Let's verify the maintenance implications of this shared project approach:

#!/bin/bash
# Description: Check for potential maintenance issues with the shared project approach

# Test 1: Check if any projects are already importing Common.projitems
echo "Checking for existing Common.projitems imports..."
rg -l "Import.*Common\.projitems"

# Test 2: Check for potential file conflicts
echo "Checking for potential file conflicts across projects..."
fd -e cs -x dirname {} \; | sort | uniq -c | sort -nr

16-22: Verify if netstandard2.0 is the optimal target framework.

While netstandard2.0 provides good compatibility, please verify if this aligns with the minimum requirements of your analyzers and code fixes.

Let's check the target frameworks of related projects:

#!/bin/bash
# Description: Check target frameworks across the solution

# Test: Find target framework specifications in all project files
echo "Checking target frameworks across projects..."
fd -e csproj -x rg -l "TargetFramework.*" {}

30-34: Verify package version and RepoRoot variable.

A few points to verify:

  1. The Microsoft.CodeAnalysis.CSharp package version should be specified to ensure consistency
  2. Ensure $(RepoRoot) is properly defined in the build environment

Let's check these aspects:

✅ Verification successful

Let me try another verification approach with different commands:


Let me try one final verification to check the package versions in the central package management files, which is a common practice:


Package version is centrally managed and RepoRoot is properly defined

Based on the verification results:

  1. The Microsoft.CodeAnalysis.CSharp package version (4.3.1) is centrally managed in Directory.Packages.props, which is the recommended approach for .NET projects
  2. The $(RepoRoot) variable is properly defined in Directory.Build.props as $(MSBuildThisFileDirectory), which is the standard way to reference the repository root

The original concerns have been addressed:

  • Package versioning is handled correctly through central package management
  • RepoRoot variable is properly defined at the solution level
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify package versions and RepoRoot usage

# Test 1: Check for Microsoft.CodeAnalysis.CSharp versions across projects
echo "Checking Microsoft.CodeAnalysis.CSharp versions..."
rg -l "PackageReference.*Microsoft\.CodeAnalysis\.CSharp"

# Test 2: Check for RepoRoot definition
echo "Checking RepoRoot definition..."
fd -e props -e targets -x rg -l "RepoRoot" {}

Length of output: 573


Script:

#!/bin/bash
# Check for Microsoft.CodeAnalysis.CSharp package references with versions
echo "Checking Microsoft.CodeAnalysis.CSharp package references:"
rg "PackageReference.*Microsoft\.CodeAnalysis\.CSharp.*Version" -A 1 -B 1

# Check for Directory.Build.props which commonly defines global properties
echo -e "\nChecking Directory.Build.props files:"
fd "Directory.Build.props" --exec cat {}

# Check other potential property files that might define RepoRoot
echo -e "\nChecking other property files for RepoRoot:"
fd -e props -x grep -l "RepoRoot" {}

Length of output: 996


Script:

#!/bin/bash
# Check for Directory.Packages.props which is commonly used for central package versioning
echo "Checking Directory.Packages.props:"
fd "Directory.Packages.props" --exec cat {}

# Also check build/targets/compiler/Compiler.props as it was imported in Directory.Build.props
echo -e "\nChecking Compiler.props:"
cat "build/targets/compiler/Compiler.props" 2>/dev/null || echo "File not found"

# Check for any global package version definitions
echo -e "\nChecking for global package versions:"
rg "Microsoft\.CodeAnalysis\.CSharp" --type xml

Length of output: 2831

src/Analyzers/Moq.Analyzers.csproj (2)

30-31: LGTM: Common.projitems import is correctly configured.

The import statement is properly configured with the "Shared" label and uses the correct path convention.


44-44: Verify project structure changes.

The project reference path update aligns with the new directory structure. However, let's verify the consistency of these changes across the solution.

Moq.Analyzers.sln (4)

6-6: Project path changes look good.

The simplified directory structure (moving from src\Moq.Analyzers to src\Analyzers and src\Moq.CodeFixes to src\CodeFixes) makes the codebase more maintainable while preserving the assembly names.

Also applies to: 12-12


18-19: Common project addition aligns with objectives.

The addition of the Common project with a standard SDK-style project format is a good choice over .shproj, as it provides better IDE support and modern refactoring capabilities.


46-49: Build configurations are properly set up.

The Debug and Release configurations for the new Common project are correctly configured with both ActiveCfg and Build.0 settings.


62-66: Verify shared project configuration.

The SharedMSBuildProjectFiles section correctly links the Common.projitems to all relevant projects. However, let's verify the existence and content of the Common.projitems file.

✅ Verification successful

Let me verify the project references further by checking the actual projects that are sharing this Common.projitems file.


Let me try a different approach to find and verify the project files.


Let me check the project files that should be sharing the Common code to verify their configuration.


Shared project configuration is correctly set up

The verification shows that:

  1. The Common.projitems file exists and is properly configured to include all .cs files in its directory
  2. Both Moq.Analyzers.csproj and Moq.CodeFixes.csproj correctly import the Common.projitems using:
    <Import Project="$(RepoRoot)/src/Common/Common.projitems" Label="Shared" />
  3. The Common directory contains multiple shared .cs files that are properly included through the projitems configuration
  4. The GUIDs in the solution file correctly map to these projects
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the Common.projitems file exists and check its content
# Expected: File exists and contains proper MSBuild item group definitions

# Check if the Common.projitems file exists
if ! fd -p "src/Common/Common.projitems$"; then
    echo "Error: Common.projitems file not found"
    exit 1
fi

# Display the content of Common.projitems for review
echo "Content of Common.projitems:"
cat $(fd -p "src/Common/Common.projitems$")

Length of output: 362


Script:

#!/bin/bash
# Check the project files referenced in the solution with their GUIDs
rg -l "41ecc571-f586-460a-9bed-23528c8210c4|622db72f-5609-4c08-838d-6937a680094a|8e99c15c-e80a-49e5-988c-1b5071ce775f" --type xml

# For each found project file, show its content focusing on project references and shared project imports
for proj in $(rg -l "41ecc571-f586-460a-9bed-23528c8210c4|622db72f-5609-4c08-838d-6937a680094a|8e99c15c-e80a-49e5-988c-1b5071ce775f" --type xml); do
    echo "=== Content of $proj ==="
    cat "$proj"
    echo
done

Length of output: 562


Script:

#!/bin/bash
# Find all project files first
echo "=== Finding all project files ==="
fd -e csproj

# Check the content of Common.projitems again and its directory
echo -e "\n=== Common.projitems directory content ==="
ls -la $(dirname $(fd -p "src/Common/Common.projitems$"))

# Show content of any .cs files in the Common directory
echo -e "\n=== .cs files in Common directory ==="
fd -e cs . $(dirname $(fd -p "src/Common/Common.projitems$"))

Length of output: 2571


Script:

#!/bin/bash
# Check the content of the main project files that should be sharing Common
echo "=== Content of Moq.Analyzers.csproj ==="
cat "src/Analyzers/Moq.Analyzers.csproj"

echo -e "\n=== Content of Moq.CodeFixes.csproj ==="
cat "src/CodeFixes/Moq.CodeFixes.csproj"

echo -e "\n=== Content of Moq.Analyzers.Test.csproj ==="
cat "tests/Moq.Analyzers.Test/Moq.Analyzers.Test.csproj"

Length of output: 4741

@qlty-cloud-legacy
Copy link
Copy Markdown

Code Climate has analyzed commit 6c20348 and detected 162 issues on this pull request.

Here's the issue category breakdown:

Category Count
Complexity 32
Duplication 9
Style 121

View more on Code Climate.

@MattKotsenas MattKotsenas merged commit bbb213d into rjmurillo:main Oct 22, 2024
@MattKotsenas MattKotsenas deleted the refactor/common-project branch October 22, 2024 22:21
@rjmurillo rjmurillo added this to the vNext milestone Oct 22, 2024
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants