Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -830,3 +830,23 @@ dotnet_diagnostic.CA2007.severity = warning

[Source/Presentation/MMCA.Common.UI*/**.cs]
dotnet_diagnostic.CA2007.severity = none

# S8969 / S8970 (new in SonarAnalyzer 10.30): "remove this null-forgiving operator".
# Downgraded from the baseline error severity because both produce FALSE POSITIVES here, and
# under TreatWarningsAsErrors a false positive is a broken build rather than a nudge. Measured
# on the 10.29 -> 10.30 bump: 41 sites flagged, 7 of them wrong.
#
# S8970 was wrong at ALL 3 of its sites (suppressed via NoWarn in Directory.Build.props, since
# an .editorconfig severity does not reach Razor-generated code). It claims nullable warnings are disabled and the
# operator is therefore pointless, but the flagged code is the deliberate `null!` / `default!`
# initializer pattern in .razor components, where removing the operator immediately fails with
# CS8625/CS8604. Disabled outright.
#
# S8969 was wrong at 4 of 38. It claims the compiler already knows the expression is non-null,
# and at those four the compiler disagreed with CS8602/CS8629. The other 34 were genuine and
# have been fixed. Kept as a suggestion so real redundancies still surface without gating CI.
#
# Revisit when Sonar tightens these rules; the compiler is the authority on nullability, not the
# analyzer.
[*.{cs,razor}]
dotnet_diagnostic.S8969.severity = suggestion
8 changes: 7 additions & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,13 @@
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);CS1591;RMG020</NoWarn>
<!-- S8970 ("remove this null-forgiving operator; nullable warnings are disabled here") is new in
SonarAnalyzer 10.30 and is wrong on every site it flags in this repo: all three are the
deliberate `null!` / `default!` initializer pattern in .razor components, where removing the
operator immediately fails the build with CS8625/CS8604. Suppressed HERE rather than in
.editorconfig because a `dotnet_diagnostic` severity does not reach Razor-generated code.
The compiler is the authority on nullability, not the analyzer. -->
<NoWarn>$(NoWarn);CS1591;RMG020;S8970</NoWarn>
</PropertyGroup>

<!-- Suppress xUnit1051 (CancellationToken propagation) in test projects -->
Expand Down
4 changes: 2 additions & 2 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,10 @@
upper bounds and fail restore with NU1608. Bump together with Microsoft.Maui.Controls. -->
<PackageVersion Include="Xamarin.AndroidX.Biometric" Version="1.1.0.30" />
<!-- Analyzers -->
<PackageVersion Include="Meziantou.Analyzer" Version="3.0.124" />
<PackageVersion Include="Meziantou.Analyzer" Version="3.0.133" />
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="18.7.23" />
<PackageVersion Include="Roslynator.Analyzers" Version="4.15.0" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.29.0.143774" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.30.0.144632" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
<!-- Testing -->
<!-- bUnit v2 (BunitContext / Render API) is the line compatible with xUnit v3 / Microsoft Testing Platform. -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ public virtual async Task<Result<object>> GetByIdAsync(

// Same rule as the list path: only shape when a field subset was requested.
return string.IsNullOrWhiteSpace(fields)
? Result.Success<object>(dto!)
? Result.Success<object>(dto)
: Result.Success<object>(QueryFieldService.ShapeData(dto, fields));
}

Expand Down
12 changes: 6 additions & 6 deletions Source/Core/MMCA.Common.Application/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.FeatureManagement": {
"type": "Direct",
Expand Down Expand Up @@ -76,9 +76,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Core/MMCA.Common.Domain/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"net10.0": {
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.VisualStudio.Threading.Analyzers": {
"type": "Direct",
Expand All @@ -28,9 +28,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Core/MMCA.Common.Infrastructure/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.AspNetCore.SignalR.StackExchangeRedis": {
"type": "Direct",
Expand Down Expand Up @@ -191,9 +191,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"SQLitePCLRaw.bundle_e_sqlite3": {
"type": "Direct",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ private static TIdentifier ParseOtherTypes<TIdentifier>(string id, Type type)
return bool.TryParse(id, out var b) ? (TIdentifier)(object)b : (TIdentifier)(object)false;

if (type.IsEnum)
return Enum.TryParse(type, id, ignoreCase: true, out var enumValue) ? (TIdentifier)enumValue! : default!;
return Enum.TryParse(type, id, ignoreCase: true, out var enumValue) ? (TIdentifier)enumValue : default!;

throw new FormatException($"Unsupported identifier type: {type.FullName}");
}
Expand Down
12 changes: 6 additions & 6 deletions Source/Core/MMCA.Common.Shared/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"net10.0": {
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.VisualStudio.Threading.Analyzers": {
"type": "Direct",
Expand All @@ -28,9 +28,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.VisualStudio.Threading.Analyzers": {
"type": "Direct",
Expand All @@ -201,9 +201,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Hosting/MMCA.Common.Aspire/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.Extensions.Http.Resilience": {
"type": "Direct",
Expand Down Expand Up @@ -138,9 +138,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.VisualStudio.Threading.Analyzers": {
"type": "Direct",
Expand Down Expand Up @@ -43,9 +43,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Hosting/MMCA.Common.Testing.E2E/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.Playwright": {
"type": "Direct",
Expand Down Expand Up @@ -64,9 +64,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.VisualStudio.Threading.Analyzers": {
"type": "Direct",
Expand Down Expand Up @@ -53,9 +53,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Hosting/MMCA.Common.Testing/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.AspNetCore.Mvc.Testing": {
"type": "Direct",
Expand Down Expand Up @@ -85,9 +85,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public async Task InvokeAsync(
var cacheKey = string.Create(CultureInfo.InvariantCulture, $"user:deleted:{userId.Value}");

// Check cache first
var cachedResult = await cacheService.GetAsync<bool?>(cacheKey).ConfigureAwait(false);
var cachedResult = await cacheService.GetAsync<bool?>(cacheKey, context.RequestAborted).ConfigureAwait(false);
if (cachedResult is true)
{
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
Expand All @@ -73,8 +73,8 @@ public async Task InvokeAsync(
if (cachedResult is null)
{
// Cache miss — check database
var isDeleted = await softDeletedUserValidator.IsUserSoftDeletedAsync(userId.Value).ConfigureAwait(false);
await cacheService.SetAsync(cacheKey, isDeleted, CacheDuration).ConfigureAwait(false);
var isDeleted = await softDeletedUserValidator.IsUserSoftDeletedAsync(userId.Value, context.RequestAborted).ConfigureAwait(false);
await cacheService.SetAsync(cacheKey, isDeleted, CacheDuration, context.RequestAborted).ConfigureAwait(false);

if (isDeleted)
{
Expand Down
12 changes: 6 additions & 6 deletions Source/Presentation/MMCA.Common.API/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.124, )",
"resolved": "3.0.124",
"contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA=="
"requested": "[3.0.133, )",
"resolved": "3.0.133",
"contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w=="
},
"Microsoft.AspNetCore.Authentication.Google": {
"type": "Direct",
Expand Down Expand Up @@ -97,9 +97,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.29.0.143774, )",
"resolved": "10.29.0.143774",
"contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg=="
"requested": "[10.30.0.144632, )",
"resolved": "10.30.0.144632",
"contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
Loading