-
Notifications
You must be signed in to change notification settings - Fork 849
Update SonarAnalyzer.CSharp to latest #7092
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR updates the SonarAnalyzer.CSharp analyzer from version 8.56.0.67649 to 10.16.0.128591 and addresses the new analyzer warnings and suggestions introduced by this update. The changes are purely code quality improvements with no functional impact - they improve performance, code clarity, and consistency across the codebase.
Key Changes:
- Enhanced culture-aware DateTime/DateTimeOffset parsing in tests using
DateTimeFormatInfo.InvariantInfo - Optimized LINQ-to-Objects operations by replacing with more efficient array-based methods (
FirstOrDefault→Array.Find,Any→Array.Exists/List.Exists,All→Array.TrueForAll) - Improved structured logging with PascalCase template parameter names following Microsoft conventions
- Various code simplifications including boolean expression cleanup, named parameter usage, and control flow consolidation
Reviewed changes
Copilot reviewed 34 out of 34 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| eng/packages/General.props | Updates SonarAnalyzer.CSharp package version from 8.56.0.67649 to 10.16.0.128591 |
| test/.editorconfig | Configures new analyzer rules (S6672, S6966, S6967) and disables rules with too many false positives (S107, S3247, S6588) |
| src/Libraries/.editorconfig | Same analyzer rule configuration updates for source libraries |
| eng/Tools/.editorconfig | Same analyzer rule configuration updates for engineering tools |
| test/Libraries/Microsoft.Extensions.AI.Tests/Embeddings/DistributedCachingEmbeddingGeneratorTest.cs | Adds culture-aware DateTimeOffset parsing with InvariantInfo for test data |
| test/Libraries/Microsoft.Extensions.AI.Tests/ChatCompletion/DistributedCachingChatClientTest.cs | Adds culture-aware DateTime parsing with InvariantInfo for test assertions |
| test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Embeddings/EmbeddingTests.cs | Adds culture-aware DateTimeOffset parsing with InvariantInfo for test data |
| test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Embeddings/BinaryEmbeddingTests.cs | Adds culture-aware DateTimeOffset parsing with InvariantInfo for test data |
| test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseUpdateExtensionsTests.cs | Adds culture-aware DateTimeOffset parsing with InvariantInfo across multiple test scenarios |
| test/Generators/Microsoft.Gen.Logging/TestClasses/NonSensitiveRecordExtensions.cs | Simplifies record declaration syntax by removing empty parameter list |
| src/Shared/ServerSentEvents/SseItem.cs | Simplifies boolean comparisons by removing redundant is true checks |
| src/Shared/FxPolyfills/IPEndPoint.cs | Consolidates duplicate conditional branches with identical assignments |
| src/Libraries/Microsoft.Extensions.Telemetry/Buffering/GlobalLogBufferManager.cs | Adds closure-free GetOrAdd overload using static lambda for NET target framework |
| src/Libraries/Microsoft.Extensions.ServiceDiscovery.Dns/Resolver/DnsResolver.cs | Replaces LINQ methods with more efficient List methods (FirstOrDefault → Find, Any → Exists) |
| src/Libraries/Microsoft.Extensions.ServiceDiscovery.Dns/DnsServiceEndpointProviderBase.cs | Consolidates duplicate conditional branches with combined condition |
| src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationParserCgroupV2.cs | Optimizes string concatenation using string interpolation to avoid ToString() allocation |
| src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Disk/DiskStatsReader.cs | Replaces LINQ Any with Array.Exists and removes unused System.Linq import |
| src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheck.cs | Uses named parameter syntax for better code clarity |
| src/Libraries/Microsoft.Extensions.DataIngestion.MarkItDown/MarkItDownMcpReader.cs | Uses named parameter syntax for better code clarity |
| src/Libraries/Microsoft.Extensions.DataIngestion.Abstractions/Microsoft.Extensions.DataIngestion.Abstractions.csproj | Suppresses additional SonarAnalyzer rule S2368 |
| src/Libraries/Microsoft.Extensions.AI/ChatCompletion/FunctionInvokingChatClient.cs | Replaces LINQ Any with List.Exists for better performance |
| src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIChatExtensions.cs | Uses named parameters for factory method calls to improve code clarity |
| src/Libraries/Microsoft.Extensions.AI.Evaluation/CompositeEvaluator.cs | Uses named parameter syntax for better code clarity |
| src/Libraries/Microsoft.Extensions.AI.Evaluation.Console/Telemetry/TelemetryHelper.cs | Updates logging statement to use structured logging with PascalCase parameter names |
| src/Libraries/Microsoft.Extensions.AI.Evaluation.Console/Telemetry/EnvironmentHelper.cs | Replaces LINQ All with Array.TrueForAll and removes unused System.Linq import |
| src/Libraries/Microsoft.Extensions.AI.Evaluation.Console/Commands/ReportCommand.cs | Updates logging template parameter names to PascalCase convention |
| src/Libraries/Microsoft.Extensions.AI.Evaluation.Console/Commands/CleanResultsCommand.cs | Updates logging template parameter names to PascalCase convention |
| src/Libraries/Microsoft.Extensions.AI.Evaluation.Console/Commands/CleanCacheCommand.cs | Updates logging template parameter names to PascalCase convention |
| src/Generators/Shared/DiagDescriptorsBase.cs | Uses named parameter syntax for DiagnosticDescriptor constructor |
| src/Generators/Microsoft.Gen.Logging/Parsing/Parser.cs | Replaces LINQ All with List.TrueForAll for consistency |
| src/Analyzers/Microsoft.Analyzers.Local/ApiLifecycle/Json/JsonValue.cs | Adds culture-aware DateTime parsing with InvariantInfo and DateTimeStyles.None |
| src/Analyzers/Microsoft.Analyzers.Local/ApiLifecycle/Json/JsonObject.cs | Fixes DebuggerDisplay attribute to reference correct field names |
| src/Analyzers/Microsoft.Analyzers.Local/ApiLifecycle/AssemblyAnalysis.cs | Replaces LINQ FirstOrDefault with Array.Find for better performance across multiple locations |
| bench/Libraries/Microsoft.Extensions.Telemetry.PerformanceTests/ModernCodeGen.cs | Replaces FormattableString.Invariant with string.Create for modern .NET optimization |
Microsoft Reviewers: Open in CodeFlow