diff --git a/Directory.Packages.props b/Directory.Packages.props index 5d34a6b..14928d3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,6 +10,7 @@ + diff --git a/src/NetEvolve.Defaults/buildMultiTargeting/SupportMissingAnalyzers.targets b/src/NetEvolve.Defaults/buildMultiTargeting/SupportMissingAnalyzers.targets index b811641..b0a6c3a 100644 --- a/src/NetEvolve.Defaults/buildMultiTargeting/SupportMissingAnalyzers.targets +++ b/src/NetEvolve.Defaults/buildMultiTargeting/SupportMissingAnalyzers.targets @@ -4,6 +4,7 @@ + diff --git a/tests/NetEvolve.Defaults.Analyzer.Tests.Unit/AnalyzerTestHelper.cs b/tests/NetEvolve.Defaults.Analyzer.Tests.Unit/AnalyzerTestHelper.cs index d5024f0..12fd3b6 100644 --- a/tests/NetEvolve.Defaults.Analyzer.Tests.Unit/AnalyzerTestHelper.cs +++ b/tests/NetEvolve.Defaults.Analyzer.Tests.Unit/AnalyzerTestHelper.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; @@ -16,10 +17,13 @@ internal static class AnalyzerTestHelper internal static async Task> GetDiagnosticsAsync( DiagnosticAnalyzer analyzer, IReadOnlyDictionary? globalOptions = null, - string source = DefaultSource + string source = DefaultSource, + CancellationToken cancellationToken = default ) { - var syntaxTree = CSharpSyntaxTree.ParseText(source); + cancellationToken.ThrowIfCancellationRequested(); + + var syntaxTree = CSharpSyntaxTree.ParseText(source, cancellationToken: cancellationToken); var compilation = CSharpCompilation.Create( "AnalyzerTestAssembly", [syntaxTree], @@ -32,11 +36,11 @@ internal static async Task> GetDiagnosticsAsync( ); var analyzerOptions = new AnalyzerOptions([], optionsProvider); +#pragma warning disable S8949 // The overload accepting a 'CancellationToken' should be used var withAnalyzers = compilation.WithAnalyzers([analyzer], analyzerOptions); +#pragma warning restore S8949 // The overload accepting a 'CancellationToken' should be used - var diagnostics = await withAnalyzers.GetAnalyzerDiagnosticsAsync().ConfigureAwait(false); - - return diagnostics; + return await withAnalyzers.GetAnalyzerDiagnosticsAsync(cancellationToken).ConfigureAwait(false); } private sealed class TestAnalyzerConfigOptionsProvider(AnalyzerConfigOptions globalOptions) diff --git a/tests/NetEvolve.Defaults.Tests.Unit/SupportMissingAnalyzersTests.cs b/tests/NetEvolve.Defaults.Tests.Unit/SupportMissingAnalyzersTests.cs index 97024a6..baf7f7c 100644 --- a/tests/NetEvolve.Defaults.Tests.Unit/SupportMissingAnalyzersTests.cs +++ b/tests/NetEvolve.Defaults.Tests.Unit/SupportMissingAnalyzersTests.cs @@ -13,17 +13,18 @@ public async Task RecommendedPackage_ContainsExpectedFixedList() var recommended = evaluated.GetItemIncludes("RecommendedPackage"); - await Assert.That(recommended).Contains("Meziantou.Analyzer"); - await Assert.That(recommended).Contains("Microsoft.CodeAnalysis.BannedApiAnalyzers"); - await Assert.That(recommended).Contains("Microsoft.CodeAnalysis.NetAnalyzers"); - await Assert.That(recommended).Contains("Microsoft.VisualStudio.Threading.Analyzers"); - await Assert.That(recommended).Contains("NetEvolve.Defaults"); - await Assert.That(recommended).Contains("Roslynator.Analyzers"); - await Assert.That(recommended).Contains("Roslynator.Formatting.Analyzers"); - await Assert.That(recommended).Contains("Roslynator.CodeAnalysis.Analyzers"); - await Assert.That(recommended).Contains("Roslynator.CodeFixes"); - await Assert.That(recommended).Contains("Roslynator.Refactorings"); - await Assert.That(recommended).Contains("SonarAnalyzer.CSharp"); - await Assert.That(recommended.Count).IsEqualTo(11); + _ = await Assert.That(recommended).Contains("Meziantou.Analyzer"); + _ = await Assert.That(recommended).Contains("Microsoft.CodeAnalysis.BannedApiAnalyzers"); + _ = await Assert.That(recommended).Contains("Microsoft.CodeAnalysis.NetAnalyzers"); + _ = await Assert.That(recommended).Contains("Microsoft.VisualStudio.Threading.Analyzers"); + _ = await Assert.That(recommended).Contains("NetEvolve.Analyzer"); + _ = await Assert.That(recommended).Contains("NetEvolve.Defaults"); + _ = await Assert.That(recommended).Contains("Roslynator.Analyzers"); + _ = await Assert.That(recommended).Contains("Roslynator.Formatting.Analyzers"); + _ = await Assert.That(recommended).Contains("Roslynator.CodeAnalysis.Analyzers"); + _ = await Assert.That(recommended).Contains("Roslynator.CodeFixes"); + _ = await Assert.That(recommended).Contains("Roslynator.Refactorings"); + _ = await Assert.That(recommended).Contains("SonarAnalyzer.CSharp"); + _ = await Assert.That(recommended.Count).IsEqualTo(12); } }