Skip to content

Commit

Permalink
Add missing string comparison type to equals comparisons (#15675)
Browse files Browse the repository at this point in the history
  • Loading branch information
lahma authored Apr 8, 2024
1 parent 43c3407 commit aa05dee
Show file tree
Hide file tree
Showing 86 changed files with 243 additions and 135 deletions.
54 changes: 54 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,58 @@
<AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
</PropertyGroup>

<PropertyGroup Label="Analysis rules">

<AnalysisLevel>latest-Recommended</AnalysisLevel>

<!-- Member is explicitly initialized to its default value -->
<NoWarn>$(NoWarn);CA1805</NoWarn>

<!-- The behavior could vary based on the current user's locale setting -->
<NoWarn>$(NoWarn);CA1304;CA1305;CA1310</NoWarn>

<!-- Specify a culture or use an invariant version to avoid implicit dependency on current culture -->
<NoWarn>$(NoWarn);CA1311</NoWarn>

<!-- Do not declare static members on generic types -->
<NoWarn>$(NoWarn);CA1000</NoWarn>

<!-- For improved performance, use the LoggerMessage delegates -->
<NoWarn>$(NoWarn);CA1848</NoWarn>

<!-- Identifier contains type name -->
<NoWarn>$(NoWarn);CA1720</NoWarn>

<!-- Do not declare visible instance fields -->
<NoWarn>$(NoWarn);CA1051</NoWarn>

<!-- Avoid using cref tags with a prefix -->
<NoWarn>$(NoWarn);CA1200</NoWarn>

<!--Rename type name X so that it does not end in 'Delegate', 'EventHandler', 'Permission' etc -->
<NoWarn>$(NoWarn);CA1711</NoWarn>

<!-- Parameter name differs from original overriden implemented name -->
<NoWarn>$(NoWarn);CA1725</NoWarn>

<!-- Reserved keyword -->
<NoWarn>$(NoWarn);CA1716</NoWarn>

<!-- Type owns disposable field(s) -->
<NoWarn>$(NoWarn);CA1001</NoWarn>

<!-- Exception type is not sufficiently specific -->
<NoWarn>$(NoWarn);CA2201</NoWarn>

<!-- Remove the underscores from member name -->
<NoWarn>$(NoWarn);CA1707</NoWarn>

<!-- Use PascalCase for named placeholders in the logging message template -->
<NoWarn>$(NoWarn);CA1727</NoWarn>

<!--CA1861 : Prefer 'static readonly' fields over constant array arguments if the called method is called repeatedly and is not mutating the passed array -->
<NoWarn>$(NoWarn);CA1861</NoWarn>

</PropertyGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
Expand Down Expand Up @@ -124,7 +125,7 @@ public override async Task CloningAsync(CloneContentContext context, AliasPart p
private async Task<string> GetPatternAsync(AliasPart part)
{
var contentTypeDefinition = await _contentDefinitionManager.GetTypeDefinitionAsync(part.ContentItem.ContentType);
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, nameof(AliasPart)));
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, nameof(AliasPart), StringComparison.Ordinal));
var pattern = contentTypePartDefinition.GetSettings<AliasPartSettings>().Pattern;

return pattern;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public override Task GetContentItemAspectAsync(ContentItemAspectContext context,
return context.ForAsync<RouteHandlerAspect>(async aspect =>
{
var contentTypeDefinition = await _contentDefinitionManager.GetTypeDefinitionAsync(part.ContentItem.ContentType);
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, "AutoroutePart"));
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, "AutoroutePart", StringComparison.Ordinal));
var settings = contentTypePartDefinition.GetSettings<AutoroutePartSettings>();
if (settings.ManageContainedItemRoutes)
{
Expand Down Expand Up @@ -425,7 +425,7 @@ private async Task GenerateContainerPathFromPatternAsync(AutoroutePart part)
private async Task<string> GetPatternAsync(AutoroutePart part)
{
var contentTypeDefinition = await _contentDefinitionManager.GetTypeDefinitionAsync(part.ContentItem.ContentType);
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, nameof(AutoroutePart)));
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, nameof(AutoroutePart), StringComparison.Ordinal));
var pattern = contentTypePartDefinition.GetSettings<AutoroutePartSettings>().Pattern;

return pattern;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Encodings.Web;
Expand Down Expand Up @@ -45,8 +46,8 @@ private static async ValueTask<object> RenderHtml(IResolveFieldContext<HtmlField
var partName = paths[0];
var fieldName = paths[1];
var contentTypeDefinition = await contentDefinitionManager.GetTypeDefinitionAsync(ctx.Source.ContentItem.ContentType);
var contentPartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.Name, partName));
var contentPartFieldDefinition = contentPartDefinition.PartDefinition.Fields.FirstOrDefault(x => string.Equals(x.Name, fieldName));
var contentPartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.Name, partName, StringComparison.Ordinal));
var contentPartFieldDefinition = contentPartDefinition.PartDefinition.Fields.FirstOrDefault(x => string.Equals(x.Name, fieldName, StringComparison.Ordinal));
var settings = contentPartFieldDefinition.GetSettings<HtmlFieldSettings>();

var html = ctx.Source.Html;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using OrchardCore.ContentLocalization.Models;
Expand Down Expand Up @@ -54,14 +55,14 @@ public async Task GetContentItemsAsync(ContentTypesSitemapSource source, Content
{
// Test that content type is still valid to include in sitemap.
var contentType = routeableContentTypeDefinitions
.FirstOrDefault(ctd => string.Equals(source.LimitedContentType.ContentTypeName, ctd.Name));
.FirstOrDefault(ctd => string.Equals(source.LimitedContentType.ContentTypeName, ctd.Name, StringComparison.Ordinal));

if (contentType == null)
{
return;
}

if (contentType.Parts.Any(ctd => string.Equals(ctd.Name, nameof(LocalizationPart))))
if (contentType.Parts.Any(ctd => string.Equals(ctd.Name, nameof(LocalizationPart), StringComparison.Ordinal)))
{
// Get all content items here for reference. Then reduce by default culture.
// We know that the content item should be localized.
Expand All @@ -77,7 +78,7 @@ public async Task GetContentItemsAsync(ContentTypesSitemapSource source, Content

// Reduce by default culture.
var items = queryResults
.Where(ci => string.Equals(ci.As<LocalizationPart>().Culture, defaultCulture))
.Where(ci => string.Equals(ci.As<LocalizationPart>().Culture, defaultCulture, StringComparison.Ordinal))
.Skip(source.LimitedContentType.Skip)
.Take(source.LimitedContentType.Take);

Expand All @@ -104,7 +105,7 @@ public async Task GetContentItemsAsync(ContentTypesSitemapSource source, Content
{
// Test that content types are still valid to include in sitemap.
var typesToIndex = routeableContentTypeDefinitions
.Where(ctd => source.ContentTypes.Any(s => string.Equals(ctd.Name, s.ContentTypeName)))
.Where(ctd => source.ContentTypes.Any(s => string.Equals(ctd.Name, s.ContentTypeName, StringComparison.Ordinal)))
.Select(x => x.Name);

// No advantage here in reducing with localized index.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
Expand Down Expand Up @@ -31,7 +32,7 @@ public PreviewPartHandler(
private async Task<string> GetPatternAsync(PreviewPart part)
{
var contentTypeDefinition = await _contentDefinitionManager.GetTypeDefinitionAsync(part.ContentItem.ContentType);
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, "PreviewPart"));
var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, "PreviewPart", StringComparison.Ordinal));
var pattern = contentTypePartDefinition.GetSettings<PreviewPartSettings>().Pattern;

return pattern;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Threading.Tasks;
using OrchardCore.ContentManagement.Metadata.Models;
using OrchardCore.Contents.AuditTrail.Models;
Expand All @@ -13,7 +14,10 @@ public class AuditTrailPartSettingsDisplayDriver : ContentTypePartDefinitionDisp
{
public override IDisplayResult Edit(ContentTypePartDefinition model, IUpdateModel updater)
{
if (!string.Equals(nameof(AuditTrailPart), model.PartDefinition.Name)) return null;
if (!string.Equals(nameof(AuditTrailPart), model.PartDefinition.Name, StringComparison.Ordinal))
{
return null;
}

return Initialize<AuditTrailPartSettingsViewModel>("AuditTrailPartSettings_Edit", viewModel =>
{
Expand All @@ -24,7 +28,10 @@ public override IDisplayResult Edit(ContentTypePartDefinition model, IUpdateMode

public override async Task<IDisplayResult> UpdateAsync(ContentTypePartDefinition model, UpdateTypePartEditorContext context)
{
if (!string.Equals(nameof(AuditTrailPart), model.PartDefinition.Name)) return null;
if (!string.Equals(nameof(AuditTrailPart), model.PartDefinition.Name, StringComparison.Ordinal))
{
return null;
}

var viewModel = new AuditTrailPartSettingsViewModel();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ private async Task<List<SelectListItem>> GetListableContentTypeOptionsAsync(
continue;
}

items.Add(new SelectListItem(definition.DisplayName, definition.Name, string.Equals(definition.Name, selectedContentType)));
items.Add(new SelectListItem(definition.DisplayName, definition.Name, string.Equals(definition.Name, selectedContentType, StringComparison.Ordinal)));
}

return items;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Threading.Tasks;
using OrchardCore.ContentManagement;

Expand All @@ -9,7 +10,7 @@ public class ContentItemIdHandleProvider : IContentHandleProvider

public Task<string> GetContentItemIdAsync(string handle)
{
if (handle.StartsWith("contentitemid:", System.StringComparison.OrdinalIgnoreCase))
if (handle.StartsWith("contentitemid:", StringComparison.OrdinalIgnoreCase))
{
var contentItemId = handle[14..];

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
Expand Down Expand Up @@ -118,7 +119,7 @@ private async Task PopulateChangeFrequencyPriority(ContentTypesSitemapSource sou
else
{
var sitemapEntry = source.ContentTypes
.FirstOrDefault(ct => string.Equals(ct.ContentTypeName, contentItem.ContentType));
.FirstOrDefault(ct => string.Equals(ct.ContentTypeName, contentItem.ContentType, StringComparison.Ordinal));

changeFrequencyValue = sitemapEntry.ChangeFrequency.ToString();
}
Expand All @@ -138,7 +139,7 @@ private async Task PopulateChangeFrequencyPriority(ContentTypesSitemapSource sou
else
{
var sitemapEntry = source.ContentTypes
.FirstOrDefault(ct => string.Equals(ct.ContentTypeName, contentItem.ContentType));
.FirstOrDefault(ct => string.Equals(ct.ContentTypeName, contentItem.ContentType, StringComparison.Ordinal));

priorityIntValue = sitemapEntry.Priority;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using OrchardCore.DisplayManagement.Handlers;
Expand Down Expand Up @@ -36,9 +37,9 @@ public override async Task<IDisplayResult> EditAsync(ContentTypesSitemapSource s
{
ContentTypeName = ctd.Name,
ContentTypeDisplayName = ctd.DisplayName,
IsChecked = sitemapSource.ContentTypes.Any(s => string.Equals(s.ContentTypeName, ctd.Name)),
ChangeFrequency = sitemapSource.ContentTypes.FirstOrDefault(s => string.Equals(s.ContentTypeName, ctd.Name))?.ChangeFrequency ?? ChangeFrequency.Daily,
Priority = sitemapSource.ContentTypes.FirstOrDefault(s => string.Equals(s.ContentTypeName, ctd.Name))?.Priority ?? 5,
IsChecked = sitemapSource.ContentTypes.Any(s => string.Equals(s.ContentTypeName, ctd.Name, StringComparison.Ordinal)),
ChangeFrequency = sitemapSource.ContentTypes.FirstOrDefault(s => string.Equals(s.ContentTypeName, ctd.Name, StringComparison.Ordinal))?.ChangeFrequency ?? ChangeFrequency.Daily,
Priority = sitemapSource.ContentTypes.FirstOrDefault(s => string.Equals(s.ContentTypeName, ctd.Name, StringComparison.Ordinal))?.Priority ?? 5,
})
.OrderBy(ctd => ctd.ContentTypeDisplayName)
.ToArray();
Expand All @@ -53,11 +54,11 @@ public override async Task<IDisplayResult> EditAsync(ContentTypesSitemapSource s
.ToArray();

var limitedCtd = contentTypeDefinitions
.FirstOrDefault(ctd => string.Equals(sitemapSource.LimitedContentType.ContentTypeName, ctd.Name));
.FirstOrDefault(ctd => string.Equals(sitemapSource.LimitedContentType.ContentTypeName, ctd.Name, StringComparison.Ordinal));

if (limitedCtd != null)
{
var limitedEntry = limitedEntries.FirstOrDefault(le => string.Equals(le.ContentTypeName, limitedCtd.Name));
var limitedEntry = limitedEntries.FirstOrDefault(le => string.Equals(le.ContentTypeName, limitedCtd.Name, StringComparison.Ordinal));
limitedEntry.Priority = sitemapSource.LimitedContentType.Priority;
limitedEntry.ChangeFrequency = sitemapSource.LimitedContentType.ChangeFrequency;
limitedEntry.Skip = sitemapSource.LimitedContentType.Skip;
Expand Down Expand Up @@ -106,7 +107,7 @@ public override async Task<IDisplayResult> UpdateAsync(ContentTypesSitemapSource
})
.ToArray();

var limitedEntry = model.LimitedContentTypes.FirstOrDefault(lct => string.Equals(lct.ContentTypeName, model.LimitedContentType));
var limitedEntry = model.LimitedContentTypes.FirstOrDefault(lct => string.Equals(lct.ContentTypeName, model.LimitedContentType, StringComparison.Ordinal));
if (limitedEntry != null)
{
sitemap.LimitedContentType.ContentTypeName = limitedEntry.ContentTypeName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ ISession session
else
{
var typesToIndex = (await _routeableContentTypeCoordinator.ListRoutableTypeDefinitionsAsync())
.Where(ctd => source.ContentTypes.Any(s => string.Equals(ctd.Name, s.ContentTypeName)))
.Where(ctd => source.ContentTypes.Any(s => string.Equals(ctd.Name, s.ContentTypeName, StringComparison.Ordinal)))
.Select(ctd => ctd.Name);

// This is an estimate, so doesn't take into account Take/Skip values.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using OrchardCore.ContentManagement;
Expand Down Expand Up @@ -51,12 +52,12 @@ public async Task UpdateSitemapAsync(SitemapUpdateContext context)
sitemap.Identifier = IdGenerator.GenerateId();
break;
}
else if (source.LimitItems && string.Equals(source.LimitedContentType.ContentTypeName, contentTypeName))
else if (source.LimitItems && string.Equals(source.LimitedContentType.ContentTypeName, contentTypeName, StringComparison.Ordinal))
{
sitemap.Identifier = IdGenerator.GenerateId();
break;
}
else if (source.ContentTypes.Any(ct => string.Equals(ct.ContentTypeName, contentTypeName)))
else if (source.ContentTypes.Any(ct => string.Equals(ct.ContentTypeName, contentTypeName, StringComparison.Ordinal)))
{
sitemap.Identifier = IdGenerator.GenerateId();
break;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using OrchardCore.ContentManagement;
Expand Down Expand Up @@ -43,7 +44,7 @@ public async Task GetContentItemsAsync(ContentTypesSitemapSource source, Content
{
// Test that content type is still valid to include in sitemap.
var typeIsValid = routeableContentTypeDefinitions
.Any(ctd => string.Equals(source.LimitedContentType.ContentTypeName, ctd.Name));
.Any(ctd => string.Equals(source.LimitedContentType.ContentTypeName, ctd.Name, StringComparison.Ordinal));

if (typeIsValid)
{
Expand All @@ -61,7 +62,7 @@ public async Task GetContentItemsAsync(ContentTypesSitemapSource source, Content
{
// Test that content types are still valid to include in sitemap.
var typesToIndex = routeableContentTypeDefinitions
.Where(ctd => source.ContentTypes.Any(s => string.Equals(ctd.Name, s.ContentTypeName)))
.Where(ctd => source.ContentTypes.Any(s => string.Equals(ctd.Name, s.ContentTypeName, StringComparison.Ordinal)))
.Select(x => x.Name);

var queryResults = await _session.Query<ContentItem>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace OrchardCore.Email.Services;

[Obsolete]
[Obsolete("Use IEmailService and its implementations instead")]
public class SmtpService : ISmtpService
{
private readonly EmailProviderOptions _emailProviderOptions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ public class EmailMigrations : DataMigration
{
private const string SmtpFeatureId = "OrchardCore.Email.Smtp";

#pragma warning disable CA1822 // Member can be static
public int Create()
#pragma warning restore CA1822
{
// In version 1.9, the OrchardCore.Email.Smtp was split from OrchardCore.Email. To ensure we keep the change
// backward compatible, we added this migration step to auto-enable the new SMTP feature for sites that use the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics;
using System.Linq;
Expand Down Expand Up @@ -67,7 +68,7 @@ public void Configure(AuthenticationOptions options)
public void Configure(string name, FacebookOptions options)
{
// Ignore OpenID Connect client handler instances that don't correspond to the instance managed by the OpenID module.
if (!string.Equals(name, FacebookDefaults.AuthenticationScheme))
if (!string.Equals(name, FacebookDefaults.AuthenticationScheme, StringComparison.Ordinal))
{
return;
}
Expand Down
Loading

0 comments on commit aa05dee

Please sign in to comment.