Skip to content

Commit b74c888

Browse files
SLVS-2500 Respect NET repackaging (#6390)
1 parent 6da0557 commit b74c888

File tree

18 files changed

+130
-123
lines changed

18 files changed

+130
-123
lines changed

src/EmbeddedSonarAnalyzer.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<EmbeddedSonarSecretsJarVersion>2.27.0.7705</EmbeddedSonarSecretsJarVersion>
1212
<EmbeddedSonarSqvsRoslynJarVersion>1.0.0.0</EmbeddedSonarSqvsRoslynJarVersion>
1313
<!-- SLOOP: Binaries for SonarLint Out Of Process -->
14-
<EmbeddedSloopVersion>10.28.0.82098</EmbeddedSloopVersion>
14+
<EmbeddedSloopVersion>10.29.0.82181</EmbeddedSloopVersion>
1515
<EmbeddedEsLintBridgeVersion>1.0.0</EmbeddedEsLintBridgeVersion>
1616
</PropertyGroup>
1717
</Project>

src/Integration.Vsix.UnitTests/EmbeddedAnalyzers/EmbeddedDotnetAnalyzersLocatorTests.cs

Lines changed: 26 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020

2121
using System.IO;
2222
using SonarLint.VisualStudio.Core;
23-
using SonarLint.VisualStudio.Core.CSharpVB;
2423
using SonarLint.VisualStudio.Core.SystemAbstractions;
2524
using SonarLint.VisualStudio.Integration.Vsix.EmbeddedAnalyzers;
2625
using SonarLint.VisualStudio.Integration.Vsix.Helpers;
2726
using SonarLint.VisualStudio.RoslynAnalyzerServer.Analysis.Configuration;
27+
using SonarLint.VisualStudio.RoslynAnalyzerServer.Http.Models;
2828

2929
namespace SonarLint.VisualStudio.Integration.UnitTests.EmbeddedAnalyzers;
3030

@@ -37,36 +37,27 @@ public class EmbeddedDotnetAnalyzersLocatorTests
3737
private static readonly string VbRegularAnalyzer = GetAnalyzerFullPath(PathInsideVsix, "SonarAnalyzer.VisualBasic.dll");
3838
private static readonly string CSharpEnterpriseAnalyzer = GetAnalyzerFullPath(PathInsideVsix, "SonarAnalyzer.Enterprise.CSharp.dll");
3939
private static readonly string VbEnterpriseAnalyzer = GetAnalyzerFullPath(PathInsideVsix, "SonarAnalyzer.Enterprise.VisualBasic.dll");
40+
private IFileSystemService fileSystem;
4041

4142
private EmbeddedDotnetAnalyzersLocator testSubject;
4243
private IVsixRootLocator vsixRootLocator;
43-
private IFileSystemService fileSystem;
44-
private ILanguageProvider languageProvider;
4544

4645
[TestInitialize]
4746
public void TestInitialize()
4847
{
4948
vsixRootLocator = Substitute.For<IVsixRootLocator>();
50-
languageProvider = Substitute.For<ILanguageProvider>();
51-
languageProvider.RoslynLanguages.Returns([Language.CSharp, Language.VBNET]);
5249
fileSystem = Substitute.For<IFileSystemService>();
53-
testSubject = new EmbeddedDotnetAnalyzersLocator(vsixRootLocator, languageProvider, fileSystem);
50+
testSubject = new EmbeddedDotnetAnalyzersLocator(vsixRootLocator, fileSystem);
5451
}
5552

5653
[TestMethod]
57-
public void MefCtor_CheckIsExported()
58-
{
54+
public void MefCtor_CheckIsExported() =>
5955
MefTestHelpers.CheckTypeCanBeImported<EmbeddedDotnetAnalyzersLocator, IEmbeddedDotnetAnalyzersLocator>(
6056
MefTestHelpers.CreateExport<IVsixRootLocator>(),
61-
MefTestHelpers.CreateExport<ILanguageProvider>(),
6257
MefTestHelpers.CreateExport<IFileSystemService>());
63-
}
6458

6559
[TestMethod]
66-
public void MefCtor_IsSingleton()
67-
{
68-
MefTestHelpers.CheckIsSingletonMefComponent<EmbeddedDotnetAnalyzersLocator>();
69-
}
60+
public void MefCtor_IsSingleton() => MefTestHelpers.CheckIsSingletonMefComponent<EmbeddedDotnetAnalyzersLocator>();
7061

7162
[TestMethod]
7263
public void GetBasicAnalyzerFullPaths_AnalyzersExists_ReturnsFullPathsToAnalyzers()
@@ -149,30 +140,21 @@ public void GetAnalyzerFullPaths_SearchesForFilesInsideVsix()
149140
}
150141

151142
[TestMethod]
152-
public void GetBasicAnalyzerFullPathsByLanguage_GroupsDllsByLanguageAndFiltersEnterprise()
143+
public void GetAnalyzerFullPathsByLanguage_BothEnterprise_GroupsEnterpriseDllsByLanguage()
153144
{
154145
fileSystem.Directory.GetFiles(Arg.Any<string>(), Arg.Any<string>()).Returns([
155146
CSharpRegularAnalyzer,
156147
VbRegularAnalyzer,
157-
CSharpEnterpriseAnalyzer
148+
CSharpEnterpriseAnalyzer,
149+
VbEnterpriseAnalyzer
158150
]);
159151

160-
testSubject.GetBasicAnalyzerFullPathsByLanguage().Should().BeEquivalentTo(new Dictionary<RoslynLanguage, List<string>>
161-
{
162-
[Language.CSharp] = [CSharpRegularAnalyzer], [Language.VBNET] = [VbRegularAnalyzer]
163-
});
152+
testSubject.GetAnalyzerFullPathsByLanguage(new AnalyzerInfoDto(true, true)).Should().BeEquivalentTo(
153+
new Dictionary<RoslynLanguage, List<string>> { [Language.CSharp] = [CSharpRegularAnalyzer, CSharpEnterpriseAnalyzer], [Language.VBNET] = [VbRegularAnalyzer, VbEnterpriseAnalyzer] });
164154
}
165155

166156
[TestMethod]
167-
public void GetBasicAnalyzerFullPathsByLanguage_IncludesAllLanguagesEvenWithNoAnalyzers()
168-
{
169-
fileSystem.Directory.GetFiles(Arg.Any<string>(), Arg.Any<string>()).Returns([CSharpRegularAnalyzer]);
170-
171-
testSubject.GetBasicAnalyzerFullPathsByLanguage().Should().BeEquivalentTo(new Dictionary<RoslynLanguage, List<string>> { [Language.CSharp] = [CSharpRegularAnalyzer], [Language.VBNET] = [] });
172-
}
173-
174-
[TestMethod]
175-
public void GetEnterpriseAnalyzerFullPathsByLanguage_GroupsDllsByLanguageIncludingEnterprise()
157+
public void GetAnalyzerFullPathsByLanguage_BothBasic_GroupsBasicDllsByLanguage()
176158
{
177159
fileSystem.Directory.GetFiles(Arg.Any<string>(), Arg.Any<string>()).Returns([
178160
CSharpRegularAnalyzer,
@@ -181,40 +163,37 @@ public void GetEnterpriseAnalyzerFullPathsByLanguage_GroupsDllsByLanguageIncludi
181163
VbEnterpriseAnalyzer
182164
]);
183165

184-
testSubject.GetEnterpriseAnalyzerFullPathsByLanguage().Should().BeEquivalentTo(new Dictionary<RoslynLanguage, List<string>>
185-
{
186-
[Language.CSharp] = [CSharpRegularAnalyzer, CSharpEnterpriseAnalyzer], [Language.VBNET] = [VbRegularAnalyzer, VbEnterpriseAnalyzer]
187-
});
166+
testSubject.GetAnalyzerFullPathsByLanguage(new AnalyzerInfoDto(false, false)).Should().BeEquivalentTo(
167+
new Dictionary<RoslynLanguage, List<string>> { [Language.CSharp] = [CSharpRegularAnalyzer], [Language.VBNET] = [VbRegularAnalyzer] });
188168
}
189169

190170
[TestMethod]
191-
public void GetEnterpriseAnalyzerFullPathsByLanguage_IncludesAllLanguagesEvenWithNoAnalyzers()
171+
public void GetAnalyzerFullPathsByLanguage_OnlyCsharpEnterprise_GroupsDllsByLanguage()
192172
{
193-
fileSystem.Directory.GetFiles(Arg.Any<string>(), Arg.Any<string>()).Returns([VbEnterpriseAnalyzer]);
173+
fileSystem.Directory.GetFiles(Arg.Any<string>(), Arg.Any<string>()).Returns([
174+
CSharpRegularAnalyzer,
175+
VbRegularAnalyzer,
176+
CSharpEnterpriseAnalyzer,
177+
VbEnterpriseAnalyzer
178+
]);
194179

195-
testSubject.GetEnterpriseAnalyzerFullPathsByLanguage().Should().BeEquivalentTo(new Dictionary<RoslynLanguage, List<string>> { [Language.CSharp] = [], [Language.VBNET] = [VbEnterpriseAnalyzer] });
180+
testSubject.GetAnalyzerFullPathsByLanguage(new AnalyzerInfoDto(true, false)).Should().BeEquivalentTo(
181+
new Dictionary<RoslynLanguage, List<string>> { [Language.CSharp] = [CSharpRegularAnalyzer, CSharpEnterpriseAnalyzer], [Language.VBNET] = [VbRegularAnalyzer] });
196182
}
197183

198184
[TestMethod]
199-
public void GetEnterpriseAnalyzerFullPathsByLanguage_ExcludesLanguagesNotInRoslynLanguages()
185+
public void GetAnalyzerFullPathsByLanguage_OnlyVbEnterprise_GroupsDllsByLanguage()
200186
{
201187
fileSystem.Directory.GetFiles(Arg.Any<string>(), Arg.Any<string>()).Returns([
202188
CSharpRegularAnalyzer,
203189
VbRegularAnalyzer,
204190
CSharpEnterpriseAnalyzer,
205191
VbEnterpriseAnalyzer
206192
]);
207-
// Only C# is in the Roslyn languages, VB.NET is not
208-
languageProvider.RoslynLanguages.Returns([Language.CSharp]);
209193

210-
testSubject.GetEnterpriseAnalyzerFullPathsByLanguage().Should().BeEquivalentTo(new Dictionary<RoslynLanguage, List<string>>
211-
{
212-
[Language.CSharp] = [CSharpRegularAnalyzer, CSharpEnterpriseAnalyzer]
213-
});
194+
testSubject.GetAnalyzerFullPathsByLanguage(new AnalyzerInfoDto(false, true)).Should().BeEquivalentTo(
195+
new Dictionary<RoslynLanguage, List<string>> { [Language.CSharp] = [CSharpRegularAnalyzer], [Language.VBNET] = [VbRegularAnalyzer, VbEnterpriseAnalyzer] });
214196
}
215197

216-
private static string GetAnalyzerFullPath(string pathInsideVsix, string analyzerFile)
217-
{
218-
return Path.Combine(pathInsideVsix, analyzerFile);
219-
}
198+
private static string GetAnalyzerFullPath(string pathInsideVsix, string analyzerFile) => Path.Combine(pathInsideVsix, analyzerFile);
220199
}

src/Integration.Vsix/EmbeddedAnalyzers/EmbeddedDotnetAnalyzersLocator.cs

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,20 @@
2222
using System.IO;
2323
using System.IO.Abstractions;
2424
using SonarLint.VisualStudio.Core;
25-
using SonarLint.VisualStudio.Core.CSharpVB;
2625
using SonarLint.VisualStudio.Core.SystemAbstractions;
2726
using SonarLint.VisualStudio.Infrastructure.VS.Roslyn;
2827
using SonarLint.VisualStudio.Integration.Vsix.Helpers;
2928
using SonarLint.VisualStudio.RoslynAnalyzerServer.Analysis.Configuration;
29+
using SonarLint.VisualStudio.RoslynAnalyzerServer.Http.Models;
3030

3131
namespace SonarLint.VisualStudio.Integration.Vsix.EmbeddedAnalyzers;
3232

3333
[Export(typeof(IEmbeddedDotnetAnalyzersLocator))]
3434
[Export(typeof(IObsoleteDotnetAnalyzersLocator))]
3535
[PartCreationPolicy(CreationPolicy.Shared)]
3636
[method: ImportingConstructor]
37-
internal class EmbeddedDotnetAnalyzersLocator(IVsixRootLocator vsixRootLocator, ILanguageProvider languageProvider, IFileSystemService fileSystem) : IEmbeddedDotnetAnalyzersLocator, IObsoleteDotnetAnalyzersLocator
37+
internal class EmbeddedDotnetAnalyzersLocator(IVsixRootLocator vsixRootLocator, IFileSystemService fileSystem)
38+
: IEmbeddedDotnetAnalyzersLocator, IObsoleteDotnetAnalyzersLocator
3839
{
3940
private const string PathInsideVsix = "EmbeddedDotnetAnalyzerDLLs";
4041
private const string DllsSearchPattern = "SonarAnalyzer.*.dll"; // starting from 10.0, the analyzer assemblies are merged and all of the dll names start with SonarAnalyzer
@@ -44,32 +45,29 @@ internal class EmbeddedDotnetAnalyzersLocator(IVsixRootLocator vsixRootLocator,
4445

4546
public List<string> GetBasicAnalyzerFullPaths() => GetBasicAnalyzerDlls().ToList();
4647

47-
public Dictionary<RoslynLanguage, List<string>> GetBasicAnalyzerFullPathsByLanguage() => GroupByLanguage(GetBasicAnalyzerDlls());
48+
public Dictionary<RoslynLanguage, List<string>> GetAnalyzerFullPathsByLanguage(AnalyzerInfoDto analyzerInfoDto)
49+
{
50+
var allAnalyzers = GetAllAnalyzerDlls();
51+
var languageToDllsMap = new Dictionary<RoslynLanguage, List<string>>
52+
{
53+
{ RoslynLanguage.CSharp, GetAnalyzerFullPathsByLanguage(RoslynLanguage.CSharp, analyzerInfoDto.ShouldUseCsharpEnterprise, allAnalyzers) },
54+
{ RoslynLanguage.VBNET, GetAnalyzerFullPathsByLanguage(RoslynLanguage.VBNET, analyzerInfoDto.ShouldUseVbEnterprise, allAnalyzers) }
55+
};
56+
return languageToDllsMap;
57+
}
58+
59+
private static List<string> GetAnalyzerFullPathsByLanguage(RoslynLanguage language, bool shouldUseEnterprise, IEnumerable<string> allAnalyzers)
60+
{
61+
var dlls = shouldUseEnterprise ? allAnalyzers : allAnalyzers.Where(x => !x.Contains(EnterpriseInfix));
62+
63+
return dlls.Where(dll => dll.Contains(language.RoslynDllIdentifier)).ToList();
64+
}
4865

4966
private IEnumerable<string> GetBasicAnalyzerDlls() => GetAllAnalyzerDlls().Where(x => !x.Contains(EnterpriseInfix));
5067

5168
public List<string> GetEnterpriseAnalyzerFullPaths() => GetAllAnalyzerDlls().ToList();
5269

53-
public Dictionary<RoslynLanguage, List<string>> GetEnterpriseAnalyzerFullPathsByLanguage() => GroupByLanguage(GetAllAnalyzerDlls());
54-
5570
private string[] GetAllAnalyzerDlls() => fileSystem.Directory.GetFiles(GetPathToParentFolder(), DllsSearchPattern);
5671

5772
private string GetPathToParentFolder() => Path.Combine(vsixRootLocator.GetVsixRoot(), PathInsideVsix);
58-
59-
60-
private Dictionary<RoslynLanguage, List<string>> GroupByLanguage(IEnumerable<string> analyzerDlls)
61-
{
62-
var languageToAnalyzerLocations = languageProvider.RoslynLanguages.ToDictionary(x => x, _ => new List<string>());
63-
64-
foreach (var analyzerDll in analyzerDlls)
65-
{
66-
var dllLanguage = languageToAnalyzerLocations.Keys.FirstOrDefault(x => analyzerDll.Contains(x.RoslynDllIdentifier));
67-
if (dllLanguage != null)
68-
{
69-
languageToAnalyzerLocations[dllLanguage].Add(analyzerDll);
70-
}
71-
}
72-
73-
return languageToAnalyzerLocations;
74-
}
7573
}

src/RoslynAnalyzerServer.IntegrationTests/Http/Helper/HttpServerStarter.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
using SonarLint.VisualStudio.RoslynAnalyzerServer.Analysis;
2323
using SonarLint.VisualStudio.RoslynAnalyzerServer.Http;
2424
using SonarLint.VisualStudio.RoslynAnalyzerServer.Http.Models;
25-
using SonarLint.VisualStudio.SLCore.Common.Models;
2625

2726
namespace SonarLint.VisualStudio.RoslynAnalyzerServer.IntegrationTests.Http.Helper;
2827

@@ -76,7 +75,7 @@ private static ILogger CreateMockedLogger()
7675
private static IRoslynAnalysisService CreateMockedAnalysisEngine()
7776
{
7877
var analysisEngine = Substitute.For<IRoslynAnalysisService>();
79-
analysisEngine.AnalyzeAsync(Arg.Any<List<FileUri>>(), Arg.Any<List<ActiveRuleDto>>(), Arg.Any<Dictionary<string, string>>(), Arg.Any<CancellationToken>()).Returns(Task.FromResult(Enumerable.Empty<RoslynIssue>()));
78+
analysisEngine.AnalyzeAsync(Arg.Any<AnalysisRequest>(), Arg.Any<CancellationToken>()).Returns(Task.FromResult(Enumerable.Empty<RoslynIssue>()));
8079
return analysisEngine;
8180
}
8281

src/RoslynAnalyzerServer.IntegrationTests/Http/RoslynAnalysisHttpServerTest.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
using SonarLint.VisualStudio.RoslynAnalyzerServer.Http;
2727
using SonarLint.VisualStudio.RoslynAnalyzerServer.Http.Models;
2828
using SonarLint.VisualStudio.RoslynAnalyzerServer.IntegrationTests.Http.Helper;
29-
using SonarLint.VisualStudio.SLCore.Common.Models;
3029

3130
namespace SonarLint.VisualStudio.RoslynAnalyzerServer.IntegrationTests.Http;
3231

@@ -197,7 +196,7 @@ public async Task StartListenAsync_AnalysisThrowsException_ReturnsInternalServer
197196
var exceptionMessage = "Simulated exception";
198197
using var serverStarter2 = new HttpServerStarter();
199198
serverStarter2.MockedRoslynAnalysisService
200-
.When(x => x.AnalyzeAsync(Arg.Any<List<FileUri>>(), Arg.Any<List<ActiveRuleDto>>(), Arg.Any<Dictionary<string, string>>(), Arg.Any<CancellationToken>()))
199+
.When(x => x.AnalyzeAsync(Arg.Any<AnalysisRequest>(), Arg.Any<CancellationToken>()))
201200
.Do(_ => throw new InvalidOperationException(exceptionMessage));
202201
serverStarter2.StartListeningOnBackgroundThread();
203202

@@ -288,6 +287,6 @@ private static void MockServerSettings(
288287

289288
private static void SimulateLongAnalysis(IRoslynAnalysisService roslynAnalysisService, int milliseconds) =>
290289
roslynAnalysisService
291-
.When(x => x.AnalyzeAsync(Arg.Any<List<FileUri>>(), Arg.Any<List<ActiveRuleDto>>(), Arg.Any<Dictionary<string, string>>(), Arg.Any<CancellationToken>()))
290+
.When(x => x.AnalyzeAsync(Arg.Any<AnalysisRequest>(), Arg.Any<CancellationToken>()))
292291
.Do(_ => Task.Delay(milliseconds).GetAwaiter().GetResult());
293292
}

src/RoslynAnalyzerServer.UnitTests/Analysis/Configuration/RoslynAnalysisConfigurationProviderTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ private static readonly ImmutableDictionary<RoslynLanguage, AnalyzerAssemblyCont
3535
= new Dictionary<RoslynLanguage, AnalyzerAssemblyContents> { { Language.CSharp, new AnalyzerAssemblyContents() } }.ToImmutableDictionary();
3636
private static readonly List<ActiveRuleDto> DefaultActiveRules = new();
3737
private static readonly Dictionary<string, string> DefaultAnalysisProperties = new();
38+
private static readonly AnalyzerInfoDto DefaultAnalyzerInfoDto = new(false, false);
3839

3940
private ISonarLintXmlProvider sonarLintXmlProvider = null!;
4041
private IRoslynAnalyzerProvider roslynAnalyzerProvider = null!;
@@ -47,7 +48,7 @@ public void TestInitialize()
4748
{
4849
sonarLintXmlProvider = Substitute.For<ISonarLintXmlProvider>();
4950
roslynAnalyzerProvider = Substitute.For<IRoslynAnalyzerProvider>();
50-
roslynAnalyzerProvider.LoadAndProcessAnalyzerAssemblies().Returns(DefaultAnalyzers);
51+
roslynAnalyzerProvider.LoadAndProcessAnalyzerAssemblies(DefaultAnalyzerInfoDto).Returns(DefaultAnalyzers);
5152

5253
analyzerProfilesProvider = Substitute.For<IRoslynAnalysisProfilesProvider>();
5354
testLogger = Substitute.ForPartsOf<TestLogger>();
@@ -101,7 +102,7 @@ public void GetConfiguration_CreatesConfigurationForEachLanguage()
101102
analyzerProfilesProvider.GetAnalysisProfilesByLanguage(DefaultAnalyzers, DefaultActiveRules, DefaultAnalysisProperties)
102103
.Returns(roslynAnalysisProfiles);
103104

104-
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties);
105+
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties, DefaultAnalyzerInfoDto);
105106

106107
result.Keys.Should().BeEquivalentTo(roslynAnalysisProfiles.Keys);
107108
foreach (var language in roslynAnalysisProfiles.Keys)
@@ -132,7 +133,7 @@ public void GetConfiguration_NoAnalyzers_LogsAndExcludesLanguage()
132133
analyzerProfilesProvider.GetAnalysisProfilesByLanguage(DefaultAnalyzers, DefaultActiveRules, DefaultAnalysisProperties)
133134
.Returns(roslynAnalysisProfiles);
134135

135-
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties);
136+
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties, DefaultAnalyzerInfoDto);
136137

137138
result.Should().BeEmpty();
138139
testLogger.AssertPartialOutputStringExists(string.Format(Resources.RoslynAnalysisConfigurationNoAnalyzers, language.Name));
@@ -156,7 +157,7 @@ public void GetConfiguration_NoActiveRules_LogsAndExcludesLanguage()
156157
analyzerProfilesProvider.GetAnalysisProfilesByLanguage(DefaultAnalyzers, DefaultActiveRules, DefaultAnalysisProperties)
157158
.Returns(roslynAnalysisProfiles);
158159

159-
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties);
160+
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties, DefaultAnalyzerInfoDto);
160161

161162
result.Should().BeEmpty();
162163
testLogger.AssertPartialOutputStringExists(string.Format(Resources.RoslynAnalysisConfigurationNoActiveRules, language.Name));
@@ -168,7 +169,7 @@ public void GetConfiguration_NoAnalysisProfiles_ReturnsEmptyDictionary()
168169
analyzerProfilesProvider.GetAnalysisProfilesByLanguage(DefaultAnalyzers, DefaultActiveRules, DefaultAnalysisProperties)
169170
.Returns(new Dictionary<RoslynLanguage, RoslynAnalysisProfile>());
170171

171-
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties);
172+
var result = testSubject.GetConfiguration(DefaultActiveRules, DefaultAnalysisProperties, DefaultAnalyzerInfoDto);
172173

173174
result.Should().BeEmpty();
174175
}

0 commit comments

Comments
 (0)