refactor: address sonarcloud/analyzer code smells and warnings

pull/47/head
Robert Dailey 3 years ago
parent 237ee97a3b
commit ebb924da12

@ -14,30 +14,50 @@ namespace Common.Tests.Extensions
} }
[Test] [Test]
public void GetOrCreate_ItemExists_ReturnExistingItem() public void Create_item_if_none_exists()
{
var dict = new Dictionary<int, MySampleValue>();
var theValue = dict.GetOrCreate(100);
dict.Should().HaveCount(1);
dict.Should().Contain(100, theValue);
}
[Test]
public void Return_default_if_no_item_exists()
{ {
var sample = new MySampleValue(); var sample = new MySampleValue();
var dict = new Dictionary<int, MySampleValue> {{100, sample}}; var dict = new Dictionary<int, MySampleValue> {{100, sample}};
var theValue = dict.GetOrCreate(100); var theValue = dict.GetOrDefault(200);
dict.Should().HaveCount(1);
dict.Should().Contain(100, sample); dict.Should().HaveCount(1).And.Contain(100, sample);
dict.Should().ContainValue(theValue); theValue.Should().BeNull();
theValue.Should().Be(sample);
} }
[Test] [Test]
public void GetOrCreate_NoItemExists_ItIsCreated() public void Return_existing_item_if_exists_not_create()
{ {
var dict = new Dictionary<int, MySampleValue>(); var sample = new MySampleValue();
var dict = new Dictionary<int, MySampleValue> {{100, sample}};
var theValue = dict.GetOrCreate(100); var theValue = dict.GetOrCreate(100);
dict.Should().HaveCount(1); dict.Should().HaveCount(1);
dict.Should().Contain(100, theValue); dict.Should().Contain(100, sample);
dict.Should().ContainValue(theValue);
theValue.Should().Be(sample);
} }
[Test] [Test]
public void GetOrDefault_ItemExists_ReturnExistingItem() public void Return_existing_item_if_it_exists_not_default()
{ {
var sample = new MySampleValue();
var dict = new Dictionary<int, MySampleValue> {{100, sample}};
var theValue = dict.GetOrDefault(100);
// Ensure the container hasn't been mutated
dict.Should().HaveCount(1).And.Contain(100, sample);
theValue.Should().Be(sample);
} }
} }
} }

@ -20,7 +20,7 @@ namespace Common.Extensions
return ruleBuilder.SetAsyncValidator(adapter); return ruleBuilder.SetAsyncValidator(adapter);
} }
private class NullableChildValidatorAdaptor<T, TProperty> : ChildValidatorAdaptor<T, TProperty>, private sealed class NullableChildValidatorAdaptor<T, TProperty> : ChildValidatorAdaptor<T, TProperty>,
IPropertyValidator<T, TProperty?>, IAsyncPropertyValidator<T, TProperty?> IPropertyValidator<T, TProperty?>, IAsyncPropertyValidator<T, TProperty?>
{ {
public NullableChildValidatorAdaptor(IValidator<TProperty> validator, Type validatorType) public NullableChildValidatorAdaptor(IValidator<TProperty> validator, Type validatorType)

@ -1,57 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace Common.Extensions
{
internal static class LinqExtensions
{
internal static IEnumerable<TResult> FullOuterGroupJoin<TA, TB, TKey, TResult>(
this IEnumerable<TA> a,
IEnumerable<TB> b,
Func<TA, TKey> selectKeyA,
Func<TB, TKey> selectKeyB,
Func<IEnumerable<TA>, IEnumerable<TB>, TKey, TResult> projection,
IEqualityComparer<TKey>? cmp = null)
{
cmp ??= EqualityComparer<TKey>.Default;
var alookup = a.ToLookup(selectKeyA, cmp);
var blookup = b.ToLookup(selectKeyB, cmp);
var keys = new HashSet<TKey>(alookup.Select(p => p.Key), cmp);
keys.UnionWith(blookup.Select(p => p.Key));
var join = from key in keys
let xa = alookup[key]
let xb = blookup[key]
select projection(xa, xb, key);
return join;
}
internal static IEnumerable<TResult> FullOuterJoin<TA, TB, TKey, TResult>(
this IEnumerable<TA> a,
IEnumerable<TB> b,
Func<TA, TKey> selectKeyA,
Func<TB, TKey> selectKeyB,
Func<TA, TB, TKey, TResult> projection,
TA? defaultA = default,
TB? defaultB = default,
IEqualityComparer<TKey>? cmp = null)
{
cmp ??= EqualityComparer<TKey>.Default;
var alookup = a.ToLookup(selectKeyA, cmp);
var blookup = b.ToLookup(selectKeyB, cmp);
var keys = new HashSet<TKey>(alookup.Select(p => p.Key), cmp);
keys.UnionWith(blookup.Select(p => p.Key));
var join = from key in keys
from xa in alookup[key].DefaultIfEmpty(defaultA)
from xb in blookup[key].DefaultIfEmpty(defaultB)
select projection(xa, xb, key);
return join;
}
}
}

@ -1,7 +1,6 @@
using System; using System;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading;
using Serilog; using Serilog;
namespace Common.Extensions namespace Common.Extensions
@ -13,31 +12,31 @@ namespace Common.Extensions
opName ??= "IObservable"; opName ??= "IObservable";
log.Debug("{OpName}: Observable obtained on Thread: {ThreadId}", log.Debug("{OpName}: Observable obtained on Thread: {ThreadId}",
opName, opName,
Thread.CurrentThread.ManagedThreadId); Environment.CurrentManagedThreadId);
return Observable.Create<T>(obs => return Observable.Create<T>(obs =>
{ {
log.Debug("{OpName}: Subscribed to on Thread: {ThreadId}", log.Debug("{OpName}: Subscribed to on Thread: {ThreadId}",
opName, opName,
Thread.CurrentThread.ManagedThreadId); Environment.CurrentManagedThreadId);
try try
{ {
var subscription = source var subscription = source
.Do( .Do(
x => log.Debug("{OpName}: OnNext({Result}) on Thread: {ThreadId}", opName, x, x => log.Debug("{OpName}: OnNext({Result}) on Thread: {ThreadId}", opName, x,
Thread.CurrentThread.ManagedThreadId), Environment.CurrentManagedThreadId),
ex => log.Debug("{OpName}: OnError({Result}) on Thread: {ThreadId}", opName, ex.Message, ex => log.Debug("{OpName}: OnError({Result}) on Thread: {ThreadId}", opName, ex.Message,
Thread.CurrentThread.ManagedThreadId), Environment.CurrentManagedThreadId),
() => log.Debug("{OpName}: OnCompleted() on Thread: {ThreadId}", opName, () => log.Debug("{OpName}: OnCompleted() on Thread: {ThreadId}", opName,
Thread.CurrentThread.ManagedThreadId)) Environment.CurrentManagedThreadId))
.Subscribe(obs); .Subscribe(obs);
return new CompositeDisposable( return new CompositeDisposable(
subscription, subscription,
Disposable.Create(() => log.Debug( Disposable.Create(() => log.Debug(
"{OpName}: Cleaned up on Thread: {ThreadId}", "{OpName}: Cleaned up on Thread: {ThreadId}",
opName, opName,
Thread.CurrentThread.ManagedThreadId))); Environment.CurrentManagedThreadId)));
} }
finally finally
{ {

@ -14,10 +14,10 @@ namespace Common.YamlDotNet
_nodeDeserializer = nodeDeserializer; _nodeDeserializer = nodeDeserializer;
} }
public bool Deserialize(IParser parser, Type expectedType, public bool Deserialize(IParser reader, Type expectedType,
Func<IParser, Type, object?> nestedObjectDeserializer, out object? value) Func<IParser, Type, object?> nestedObjectDeserializer, out object? value)
{ {
if (!_nodeDeserializer.Deserialize(parser, expectedType, nestedObjectDeserializer, out value) || if (!_nodeDeserializer.Deserialize(reader, expectedType, nestedObjectDeserializer, out value) ||
value == null) value == null)
{ {
return false; return false;
@ -31,12 +31,12 @@ namespace Common.YamlDotNet
} }
catch (ValidationException e) catch (ValidationException e)
{ {
if (parser.Current == null) if (reader.Current == null)
{ {
throw; throw;
} }
throw new YamlException(parser.Current.Start, parser.Current.End, e.Message); throw new YamlException(reader.Current.Start, reader.Current.End, e.Message);
} }
return true; return true;

@ -21,7 +21,7 @@ namespace Common.YamlDotNet
} }
[UsedImplicitly(ImplicitUseTargetFlags.Members)] [UsedImplicitly(ImplicitUseTargetFlags.Members)]
private class RootExtractor<T> private sealed class RootExtractor<T>
where T : class where T : class
{ {
public T? RootObject { get; } public T? RootObject { get; }

@ -19,13 +19,10 @@ namespace Common.YamlDotNet
type = Nullable.GetUnderlyingType(type) ?? type = Nullable.GetUnderlyingType(type) ??
throw new ArgumentException("Expected nullable enum type for ReadYaml"); throw new ArgumentException("Expected nullable enum type for ReadYaml");
if (parser.Accept<NodeEvent>(out var @event)) if (parser.Accept<NodeEvent>(out var @event) && NodeIsNull(@event))
{ {
if (NodeIsNull(@event)) parser.SkipThisAndNestedEvents();
{ return null;
parser.SkipThisAndNestedEvents();
return null;
}
} }
var scalar = parser.Consume<Scalar>(); var scalar = parser.Consume<Scalar>();
@ -35,7 +32,7 @@ namespace Common.YamlDotNet
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new Exception($"Invalid value: \"{scalar.Value}\" for {type.Name}", ex); throw new YamlException($"Invalid value: \"{scalar.Value}\" for {type.Name}", ex);
} }
} }
@ -44,12 +41,14 @@ namespace Common.YamlDotNet
type = Nullable.GetUnderlyingType(type) ?? type = Nullable.GetUnderlyingType(type) ??
throw new ArgumentException("Expected nullable enum type for WriteYaml"); throw new ArgumentException("Expected nullable enum type for WriteYaml");
if (value != null) if (value == null)
{ {
var toWrite = Enum.GetName(type, value) ?? return;
throw new InvalidOperationException($"Invalid value {value} for enum: {type}");
emitter.Emit(new Scalar(null!, null!, toWrite, ScalarStyle.Any, true, false));
} }
var toWrite = Enum.GetName(type, value) ??
throw new InvalidOperationException($"Invalid value {value} for enum: {type}");
emitter.Emit(new Scalar(null!, null!, toWrite, ScalarStyle.Any, true, false));
} }
private static bool NodeIsNull(NodeEvent nodeEvent) private static bool NodeIsNull(NodeEvent nodeEvent)
@ -61,13 +60,13 @@ namespace Common.YamlDotNet
return true; return true;
} }
if (nodeEvent is Scalar scalar && scalar.Style == ScalarStyle.Plain) if (nodeEvent is not Scalar {Style: ScalarStyle.Plain} scalar)
{ {
var value = scalar.Value; return false;
return value is "" or "~" or "null" or "Null" or "NULL";
} }
return false; var value = scalar.Value;
return value is "" or "~" or "null" or "Null" or "NULL";
} }
} }
} }

@ -1,9 +1,8 @@
using System;
using System.Collections; using System.Collections;
using System.Linq; using System.Linq;
using System.Reflection;
using Autofac; using Autofac;
using CliFx; using Autofac.Core;
using FluentAssertions;
using NUnit.Framework; using NUnit.Framework;
namespace Trash.Tests namespace Trash.Tests
@ -12,29 +11,31 @@ namespace Trash.Tests
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class CompositionRootTest public class CompositionRootTest
{ {
private class ConcreteTypeEnumerator<T> : IEnumerable private sealed class ConcreteTypeEnumerator : IEnumerable
{ {
private readonly Assembly _asm; private readonly IContainer _container;
public ConcreteTypeEnumerator() public ConcreteTypeEnumerator()
{ {
_asm = Assembly.GetAssembly(typeof(CompositionRoot)) ?? throw new NullReferenceException(); _container = CompositionRoot.Setup();
} }
public IEnumerator GetEnumerator() public IEnumerator GetEnumerator()
{ {
return _asm.DefinedTypes return _container.ComponentRegistry.Registrations
.Where(t => t.GetInterfaces().Contains(typeof(T)) && !t.IsAbstract) .SelectMany(x => x.Services)
.OfType<TypedService>()
.GetEnumerator(); .GetEnumerator();
} }
} }
[TestCaseSource(typeof(ConcreteTypeEnumerator<ICommand>))] [TestCaseSource(typeof(ConcreteTypeEnumerator))]
public void Resolve_ICommandConcreteClasses(Type concreteCmd) public void Resolve_ICommandConcreteClasses(Service service)
{ {
var builder = new ContainerBuilder(); using var container = CompositionRoot.Setup();
var container = CompositionRoot.Setup(builder); container.Invoking(c => c.ResolveService(service))
container.Resolve(concreteCmd); .Should().NotThrow()
.And.NotBeNull();
} }
} }
} }

@ -38,8 +38,6 @@ namespace Trash.Command
_qualityUpdaterFactory = qualityUpdaterFactory; _qualityUpdaterFactory = qualityUpdaterFactory;
} }
// todo: Add options to exclude parts of YAML on the fly?
public override string CacheStoragePath { get; } = public override string CacheStoragePath { get; } =
Path.Combine(AppPaths.AppDataPath, "cache", "sonarr"); Path.Combine(AppPaths.AppDataPath, "cache", "sonarr");

@ -70,8 +70,8 @@ namespace Trash
.As<IActiveServiceCommandProvider>() .As<IActiveServiceCommandProvider>()
.SingleInstance(); .SingleInstance();
builder.Register(c => c.Resolve<IActiveServiceCommandProvider>().ActiveCommand) builder.Register(c => new Lazy<IServiceCommand>(
.As<IServiceCommand>(); () => c.Resolve<IActiveServiceCommandProvider>().ActiveCommand));
} }
public static IContainer Setup() public static IContainer Setup()
@ -96,7 +96,6 @@ namespace Trash
builder.Register(_ => AutoMapperConfig.Setup()).SingleInstance(); builder.Register(_ => AutoMapperConfig.Setup()).SingleInstance();
// builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
return builder.Build(); return builder.Build();
} }
} }

@ -1,13 +1,20 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.Serialization;
using System.Text; using System.Text;
using FluentValidation.Results; using FluentValidation.Results;
namespace Trash.Config namespace Trash.Config
{ {
[Serializable]
public class ConfigurationException : Exception public class ConfigurationException : Exception
{ {
protected ConfigurationException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
private ConfigurationException(string propertyName, Type deserializableType, IEnumerable<string> messages) private ConfigurationException(string propertyName, Type deserializableType, IEnumerable<string> messages)
{ {
PropertyName = propertyName; PropertyName = propertyName;
@ -26,9 +33,9 @@ namespace Trash.Config
{ {
} }
public IReadOnlyCollection<string> ErrorMessages { get; } public IReadOnlyCollection<string> ErrorMessages { get; } = new List<string>();
public string PropertyName { get; } public string PropertyName { get; } = "";
public Type DeserializableType { get; } public Type DeserializableType { get; } = default!;
public override string Message => BuildMessage(); public override string Message => BuildMessage();

@ -37,9 +37,9 @@ namespace Trash.Config
.Build(); .Build();
} }
public IEnumerable<T> Load(string configPath, string configSection) public IEnumerable<T> Load(string propertyName, string configSection)
{ {
using var stream = _fileSystem.File.OpenText(configPath); using var stream = _fileSystem.File.OpenText(propertyName);
return LoadFromStream(stream, configSection); return LoadFromStream(stream, configSection);
} }
@ -53,24 +53,20 @@ namespace Trash.Config
var validConfigs = new List<T>(); var validConfigs = new List<T>();
while (parser.TryConsume<Scalar>(out var key)) while (parser.TryConsume<Scalar>(out var key))
{ {
if (key.Value == configSection) if (key.Value != configSection)
{ {
var configs = (List<T>?) _deserializer.Deserialize<List<T>>(parser); parser.SkipThisAndNestedEvents();
if (configs != null) continue;
{ }
foreach (var config in configs)
{
var result = _validator.Validate(config);
if (result is {IsValid: false})
{
throw new ConfigurationException(configSection, typeof(T), result.Errors);
}
validConfigs.Add(config); var configs = _deserializer.Deserialize<List<T>?>(parser);
} if (configs == null)
} {
parser.SkipThisAndNestedEvents();
continue;
} }
ValidateConfigs(configSection, configs, validConfigs);
parser.SkipThisAndNestedEvents(); parser.SkipThisAndNestedEvents();
} }
@ -82,6 +78,20 @@ namespace Trash.Config
return validConfigs; return validConfigs;
} }
private void ValidateConfigs(string configSection, IEnumerable<T> configs, ICollection<T> validConfigs)
{
foreach (var config in configs)
{
var result = _validator.Validate(config);
if (result is {IsValid: false})
{
throw new ConfigurationException(configSection, typeof(T), result.Errors);
}
validConfigs.Add(config);
}
}
public IEnumerable<T> LoadMany(IEnumerable<string> configFiles, string configSection) public IEnumerable<T> LoadMany(IEnumerable<string> configFiles, string configSection)
{ {
foreach (var config in configFiles.SelectMany(file => Load(file, configSection))) foreach (var config in configFiles.SelectMany(file => Load(file, configSection)))

@ -20,17 +20,16 @@ namespace TrashLib.Tests.Radarr.CustomFormat
{ {
public Context() public Context()
{ {
Log = Substitute.For<ILogger>(); var log = Substitute.For<ILogger>();
ServiceCache = Substitute.For<IServiceCache>(); ServiceCache = Substitute.For<IServiceCache>();
Persister = new CachePersister(Log, ServiceCache); Persister = new CachePersister(log, ServiceCache);
} }
public CachePersister Persister { get; } public CachePersister Persister { get; }
public ILogger Log { get; }
public IServiceCache ServiceCache { get; } public IServiceCache ServiceCache { get; }
} }
private ProcessedCustomFormatData QuickMakeCf(string cfName, string trashId, int cfId) private static ProcessedCustomFormatData QuickMakeCf(string cfName, string trashId, int cfId)
{ {
return new ProcessedCustomFormatData(cfName, trashId, new JObject()) return new ProcessedCustomFormatData(cfName, trashId, new JObject())
{ {

@ -14,7 +14,7 @@ namespace TrashLib.Tests.Radarr.CustomFormat.Processors.PersistenceSteps
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class CustomFormatApiPersistenceStepTest public class CustomFormatApiPersistenceStepTest
{ {
private ProcessedCustomFormatData QuickMakeCf(string cfName, string trashId, int cfId) private static ProcessedCustomFormatData QuickMakeCf(string cfName, string trashId, int cfId)
{ {
return new ProcessedCustomFormatData(cfName, trashId, new JObject()) return new ProcessedCustomFormatData(cfName, trashId, new JObject())
{ {

@ -7,22 +7,23 @@ namespace TrashLib.Config
{ {
internal class ServerInfo : IServerInfo internal class ServerInfo : IServerInfo
{ {
private readonly string _apiKey; private readonly IConfigurationProvider _config;
private readonly string _baseUrl;
private readonly ILogger _log; private readonly ILogger _log;
public ServerInfo(string baseUrl, string apiKey, ILogger log) public ServerInfo(IConfigurationProvider config, ILogger log)
{ {
_baseUrl = baseUrl; _config = config;
_apiKey = apiKey;
_log = log; _log = log;
} }
public IFlurlRequest BuildRequest() public IFlurlRequest BuildRequest()
{ {
return _baseUrl var apiKey = _config.ActiveConfiguration.ApiKey;
var baseUrl = _config.ActiveConfiguration.BaseUrl;
return baseUrl
.AppendPathSegment("api/v3") .AppendPathSegment("api/v3")
.SetQueryParams(new {apikey = _apiKey}) .SetQueryParams(new {apikey = apiKey})
.SanitizedLogging(_log); .SanitizedLogging(_log);
} }
} }

@ -1,6 +1,5 @@
using Autofac; using Autofac;
using Autofac.Extras.AggregateService; using Autofac.Extras.AggregateService;
using Serilog;
using TrashLib.Config; using TrashLib.Config;
using TrashLib.Radarr.Config; using TrashLib.Radarr.Config;
using TrashLib.Radarr.CustomFormat; using TrashLib.Radarr.CustomFormat;
@ -25,13 +24,7 @@ namespace TrashLib.Radarr
// Configuration // Configuration
builder.RegisterType<RadarrValidationMessages>().As<IRadarrValidationMessages>(); builder.RegisterType<RadarrValidationMessages>().As<IRadarrValidationMessages>();
builder.Register(c => builder.RegisterType<ServerInfo>().As<IServerInfo>();
{
var config = c.Resolve<IConfigurationProvider>().ActiveConfiguration;
var log = c.Resolve<ILogger>();
return new ServerInfo(config.BaseUrl, config.ApiKey, log);
})
.As<IServerInfo>();
// Quality Definition Support // Quality Definition Support
builder.RegisterType<RadarrQualityDefinitionUpdater>().As<IRadarrQualityDefinitionUpdater>(); builder.RegisterType<RadarrQualityDefinitionUpdater>().As<IRadarrQualityDefinitionUpdater>();
@ -43,9 +36,9 @@ namespace TrashLib.Radarr
builder.RegisterType<CachePersister>().As<ICachePersister>(); builder.RegisterType<CachePersister>().As<ICachePersister>();
// Guide Processor // Guide Processor
builder.RegisterType<GuideProcessor>()
.As< // todo: register as singleton to avoid parsing guide multiple times when using 2 or more instances in config
IGuideProcessor>(); // todo: register as singleton to avoid parsing guide multiple times when using 2 or more instances in config builder.RegisterType<GuideProcessor>().As<IGuideProcessor>();
builder.RegisterAggregateService<IGuideProcessorSteps>(); builder.RegisterAggregateService<IGuideProcessorSteps>();
builder.RegisterType<CustomFormatStep>().As<ICustomFormatStep>(); builder.RegisterType<CustomFormatStep>().As<ICustomFormatStep>();
builder.RegisterType<ConfigStep>().As<IConfigStep>(); builder.RegisterType<ConfigStep>().As<IConfigStep>();

@ -4,9 +4,111 @@
&amp;lt;/profile&amp;gt;&lt;/IDEA_SETTINGS&gt;&lt;/Profile&gt;</s:String> &amp;lt;/profile&amp;gt;&lt;/IDEA_SETTINGS&gt;&lt;/Profile&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=MyFullCleanup/@EntryIndexedValue"></s:String> <s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=MyFullCleanup/@EntryIndexedValue"></s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=MyFullCleanup/@EntryIndexRemoved">True</s:Boolean> <s:Boolean x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=MyFullCleanup/@EntryIndexRemoved">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=TrashUpdaterCleanup/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="TrashUpdaterCleanup"&gt;&lt;CSReorderTypeMembers&gt;True&lt;/CSReorderTypeMembers&gt;&lt;XMLReformatCode&gt;True&lt;/XMLReformatCode&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="False" ArrangeVarStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" /&gt;&lt;RemoveCodeRedundanciesVB&gt;True&lt;/RemoveCodeRedundanciesVB&gt;&lt;Xaml.RedundantFreezeAttribute&gt;True&lt;/Xaml.RedundantFreezeAttribute&gt;&lt;Xaml.RemoveRedundantModifiersAttribute&gt;True&lt;/Xaml.RemoveRedundantModifiersAttribute&gt;&lt;Xaml.RemoveRedundantNameAttribute&gt;True&lt;/Xaml.RemoveRedundantNameAttribute&gt;&lt;Xaml.RemoveRedundantResource&gt;True&lt;/Xaml.RemoveRedundantResource&gt;&lt;Xaml.RemoveRedundantCollectionProperty&gt;True&lt;/Xaml.RemoveRedundantCollectionProperty&gt;&lt;Xaml.RemoveRedundantAttachedPropertySetter&gt;True&lt;/Xaml.RemoveRedundantAttachedPropertySetter&gt;&lt;Xaml.RemoveRedundantStyledValue&gt;True&lt;/Xaml.RemoveRedundantStyledValue&gt;&lt;Xaml.RemoveRedundantNamespaceAlias&gt;True&lt;/Xaml.RemoveRedundantNamespaceAlias&gt;&lt;Xaml.RemoveForbiddenResourceName&gt;True&lt;/Xaml.RemoveForbiddenResourceName&gt;&lt;Xaml.RemoveRedundantGridDefinitionsAttribute&gt;True&lt;/Xaml.RemoveRedundantGridDefinitionsAttribute&gt;&lt;Xaml.RemoveRedundantGridSpanAttribut&gt;True&lt;/Xaml.RemoveRedundantGridSpanAttribut&gt;&lt;Xaml.RemoveRedundantUpdateSourceTriggerAttribute&gt;True&lt;/Xaml.RemoveRedundantUpdateSourceTriggerAttribute&gt;&lt;Xaml.RemoveRedundantBindingModeAttribute&gt;True&lt;/Xaml.RemoveRedundantBindingModeAttribute&gt;&lt;HtmlReformatCode&gt;True&lt;/HtmlReformatCode&gt;&lt;AspOptimizeRegisterDirectives&gt;True&lt;/AspOptimizeRegisterDirectives&gt;&lt;CppAddOverrideSpecifier&gt;True&lt;/CppAddOverrideSpecifier&gt;&lt;CppAddTypenameTemplateKeywords&gt;True&lt;/CppAddTypenameTemplateKeywords&gt;&lt;CppReplaceImportDirective&gt;True&lt;/CppReplaceImportDirective&gt;&lt;CppRemoveElseKeyword&gt;True&lt;/CppRemoveElseKeyword&gt;&lt;CppShortenQualifiedName&gt;True&lt;/CppShortenQualifiedName&gt;&lt;CppDeleteRedundantSpecifier&gt;True&lt;/CppDeleteRedundantSpecifier&gt;&lt;CppRemoveStatement&gt;True&lt;/CppRemoveStatement&gt;&lt;CppDeleteRedundantTypenameTemplateKeywords&gt;True&lt;/CppDeleteRedundantTypenameTemplateKeywords&gt;&lt;CppCStyleToStaticCastDescriptor&gt;True&lt;/CppCStyleToStaticCastDescriptor&gt;&lt;CppReplaceExpressionWithBooleanConst&gt;True&lt;/CppReplaceExpressionWithBooleanConst&gt;&lt;CppMakeIfConstexpr&gt;True&lt;/CppMakeIfConstexpr&gt;&lt;CppMakePostfixOperatorPrefix&gt;True&lt;/CppMakePostfixOperatorPrefix&gt;&lt;CppChangeSmartPointerToMakeFunction&gt;True&lt;/CppChangeSmartPointerToMakeFunction&gt;&lt;CppReplaceThrowWithRethrowFix&gt;True&lt;/CppReplaceThrowWithRethrowFix&gt;&lt;CppReplaceExpressionWithNullptr&gt;True&lt;/CppReplaceExpressionWithNullptr&gt;&lt;CppSortMemberInitializers&gt;True&lt;/CppSortMemberInitializers&gt;&lt;CppReformatCode&gt;True&lt;/CppReformatCode&gt;&lt;VBOptimizeImports&gt;True&lt;/VBOptimizeImports&gt;&lt;VBShortenReferences&gt;True&lt;/VBShortenReferences&gt;&lt;RemoveCodeRedundancies&gt;True&lt;/RemoveCodeRedundancies&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSArrangeQualifiers&gt;True&lt;/CSArrangeQualifiers&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;FormatAttributeQuoteDescriptor&gt;True&lt;/FormatAttributeQuoteDescriptor&gt;&lt;VBReformatCode&gt;True&lt;/VBReformatCode&gt;&lt;VBFormatDocComments&gt;True&lt;/VBFormatDocComments&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;EmbraceInRegion&gt;False&lt;/EmbraceInRegion&gt;&lt;RegionName&gt;&lt;/RegionName&gt;&lt;/CSOptimizeUsings&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSharpFormatDocComments&gt;True&lt;/CSharpFormatDocComments&gt;&lt;IDEA_SETTINGS&gt;&amp;lt;profile version="1.0"&amp;gt;&#xD; <s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=RecyclarrCleanup/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="RecyclarrCleanup"&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="False" ArrangeVarStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" /&gt;&lt;CppAddOverrideSpecifier&gt;True&lt;/CppAddOverrideSpecifier&gt;&lt;CppReplaceImportDirective&gt;True&lt;/CppReplaceImportDirective&gt;&lt;CppSortMemberInitializers&gt;True&lt;/CppSortMemberInitializers&gt;&lt;RemoveCodeRedundancies&gt;True&lt;/RemoveCodeRedundancies&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSArrangeQualifiers&gt;True&lt;/CSArrangeQualifiers&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;EmbraceInRegion&gt;False&lt;/EmbraceInRegion&gt;&lt;RegionName&gt;&lt;/RegionName&gt;&lt;/CSOptimizeUsings&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSharpFormatDocComments&gt;True&lt;/CSharpFormatDocComments&gt;&lt;IDEA_SETTINGS&gt;&amp;lt;profile version="1.0"&amp;gt;&#xD;
&amp;lt;option name="myName" value="RecyclarrCleanup" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="ES6ShorthandObjectProperty" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="JSArrowFunctionBracesCanBeRemoved" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="JSPrimitiveTypeWrapperUsage" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="JSRemoveUnnecessaryParentheses" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="JSUnnecessarySemicolon" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="TypeScriptExplicitMemberType" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="UnnecessaryContinueJS" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="UnnecessaryLabelJS" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="UnnecessaryLabelOnBreakStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="UnnecessaryLabelOnContinueStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;inspection_tool class="UnnecessaryReturnJS" enabled="false" level="WARNING" enabled_by_default="false" /&amp;gt;&#xD;
&amp;lt;/profile&amp;gt;&lt;/IDEA_SETTINGS&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSUpdateFileHeader&gt;True&lt;/CSUpdateFileHeader&gt;&lt;RIDER_SETTINGS&gt;&amp;lt;profile&amp;gt;&#xD;
&amp;lt;Language id="CSS"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;false&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="EditorConfig"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="HTML"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;false&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;OptimizeImports&amp;gt;false&amp;lt;/OptimizeImports&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="Ini"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="JSON"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="JavaScript"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;false&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;OptimizeImports&amp;gt;false&amp;lt;/OptimizeImports&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="Markdown"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="Properties"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="RELAX-NG"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="SQL"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="XML"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;false&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;OptimizeImports&amp;gt;false&amp;lt;/OptimizeImports&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="yaml"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;false&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;/profile&amp;gt;&lt;/RIDER_SETTINGS&gt;&lt;XAMLCollapseEmptyTags&gt;False&lt;/XAMLCollapseEmptyTags&gt;&lt;CppCodeStyleCleanupDescriptor ArrangeAuto="False" ArrangeBraces="False" ArrangeCVQualifiers="False" ArrangeFunctionDeclarations="False" ArrangeNestedNamespaces="False" ArrangeOverridingFunctions="False" ArrangeSlashesInIncludeDirectives="False" ArrangeTypeAliases="False" SortIncludeDirectives="False" SortMemberInitializers="False" /&gt;&lt;CppRemoveCastDescriptor&gt;False&lt;/CppRemoveCastDescriptor&gt;&lt;CppTypeTraitAliasDescriptor&gt;False&lt;/CppTypeTraitAliasDescriptor&gt;&lt;CppReplaceTieWithStructuredBindingDescriptor&gt;False&lt;/CppReplaceTieWithStructuredBindingDescriptor&gt;&lt;/Profile&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=TrashUpdaterCleanup/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="TrashUpdaterCleanup"&gt;&lt;XMLReformatCode&gt;True&lt;/XMLReformatCode&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="False" ArrangeVarStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" /&gt;&lt;RemoveCodeRedundanciesVB&gt;True&lt;/RemoveCodeRedundanciesVB&gt;&lt;Xaml.RedundantFreezeAttribute&gt;True&lt;/Xaml.RedundantFreezeAttribute&gt;&lt;Xaml.RemoveRedundantModifiersAttribute&gt;True&lt;/Xaml.RemoveRedundantModifiersAttribute&gt;&lt;Xaml.RemoveRedundantNameAttribute&gt;True&lt;/Xaml.RemoveRedundantNameAttribute&gt;&lt;Xaml.RemoveRedundantResource&gt;True&lt;/Xaml.RemoveRedundantResource&gt;&lt;Xaml.RemoveRedundantCollectionProperty&gt;True&lt;/Xaml.RemoveRedundantCollectionProperty&gt;&lt;Xaml.RemoveRedundantAttachedPropertySetter&gt;True&lt;/Xaml.RemoveRedundantAttachedPropertySetter&gt;&lt;Xaml.RemoveRedundantStyledValue&gt;True&lt;/Xaml.RemoveRedundantStyledValue&gt;&lt;Xaml.RemoveRedundantNamespaceAlias&gt;True&lt;/Xaml.RemoveRedundantNamespaceAlias&gt;&lt;Xaml.RemoveForbiddenResourceName&gt;True&lt;/Xaml.RemoveForbiddenResourceName&gt;&lt;Xaml.RemoveRedundantGridDefinitionsAttribute&gt;True&lt;/Xaml.RemoveRedundantGridDefinitionsAttribute&gt;&lt;Xaml.RemoveRedundantGridSpanAttribut&gt;True&lt;/Xaml.RemoveRedundantGridSpanAttribut&gt;&lt;Xaml.RemoveRedundantUpdateSourceTriggerAttribute&gt;True&lt;/Xaml.RemoveRedundantUpdateSourceTriggerAttribute&gt;&lt;Xaml.RemoveRedundantBindingModeAttribute&gt;True&lt;/Xaml.RemoveRedundantBindingModeAttribute&gt;&lt;HtmlReformatCode&gt;True&lt;/HtmlReformatCode&gt;&lt;AspOptimizeRegisterDirectives&gt;True&lt;/AspOptimizeRegisterDirectives&gt;&lt;CppAddOverrideSpecifier&gt;True&lt;/CppAddOverrideSpecifier&gt;&lt;CppAddTypenameTemplateKeywords&gt;True&lt;/CppAddTypenameTemplateKeywords&gt;&lt;CppReplaceImportDirective&gt;True&lt;/CppReplaceImportDirective&gt;&lt;CppRemoveElseKeyword&gt;True&lt;/CppRemoveElseKeyword&gt;&lt;CppShortenQualifiedName&gt;True&lt;/CppShortenQualifiedName&gt;&lt;CppDeleteRedundantSpecifier&gt;True&lt;/CppDeleteRedundantSpecifier&gt;&lt;CppRemoveStatement&gt;True&lt;/CppRemoveStatement&gt;&lt;CppDeleteRedundantTypenameTemplateKeywords&gt;True&lt;/CppDeleteRedundantTypenameTemplateKeywords&gt;&lt;CppCStyleToStaticCastDescriptor&gt;True&lt;/CppCStyleToStaticCastDescriptor&gt;&lt;CppReplaceExpressionWithBooleanConst&gt;True&lt;/CppReplaceExpressionWithBooleanConst&gt;&lt;CppMakeIfConstexpr&gt;True&lt;/CppMakeIfConstexpr&gt;&lt;CppMakePostfixOperatorPrefix&gt;True&lt;/CppMakePostfixOperatorPrefix&gt;&lt;CppChangeSmartPointerToMakeFunction&gt;True&lt;/CppChangeSmartPointerToMakeFunction&gt;&lt;CppReplaceThrowWithRethrowFix&gt;True&lt;/CppReplaceThrowWithRethrowFix&gt;&lt;CppReplaceExpressionWithNullptr&gt;True&lt;/CppReplaceExpressionWithNullptr&gt;&lt;CppSortMemberInitializers&gt;True&lt;/CppSortMemberInitializers&gt;&lt;CppReformatCode&gt;True&lt;/CppReformatCode&gt;&lt;VBOptimizeImports&gt;True&lt;/VBOptimizeImports&gt;&lt;VBShortenReferences&gt;True&lt;/VBShortenReferences&gt;&lt;RemoveCodeRedundancies&gt;True&lt;/RemoveCodeRedundancies&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSArrangeQualifiers&gt;True&lt;/CSArrangeQualifiers&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;FormatAttributeQuoteDescriptor&gt;True&lt;/FormatAttributeQuoteDescriptor&gt;&lt;VBReformatCode&gt;True&lt;/VBReformatCode&gt;&lt;VBFormatDocComments&gt;True&lt;/VBFormatDocComments&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;EmbraceInRegion&gt;False&lt;/EmbraceInRegion&gt;&lt;RegionName&gt;&lt;/RegionName&gt;&lt;/CSOptimizeUsings&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSharpFormatDocComments&gt;True&lt;/CSharpFormatDocComments&gt;&lt;IDEA_SETTINGS&gt;&amp;lt;profile version="1.0"&amp;gt;&#xD;
&amp;lt;option name="myName" value="TrashUpdaterCleanup" /&amp;gt;&#xD; &amp;lt;option name="myName" value="TrashUpdaterCleanup" /&amp;gt;&#xD;
&amp;lt;/profile&amp;gt;&lt;/IDEA_SETTINGS&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSUpdateFileHeader&gt;True&lt;/CSUpdateFileHeader&gt;&lt;/Profile&gt;</s:String> &amp;lt;/profile&amp;gt;&lt;/IDEA_SETTINGS&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSUpdateFileHeader&gt;True&lt;/CSUpdateFileHeader&gt;&lt;RIDER_SETTINGS&gt;&amp;lt;profile&amp;gt;&#xD;
&amp;lt;Language id="CSS"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;true&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="EditorConfig"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="HTML"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;true&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;OptimizeImports&amp;gt;true&amp;lt;/OptimizeImports&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="Ini"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="JSON"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="JavaScript"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;true&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;OptimizeImports&amp;gt;true&amp;lt;/OptimizeImports&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="Markdown"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="Properties"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="RELAX-NG"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="SQL"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="XML"&amp;gt;&#xD;
&amp;lt;Rearrange&amp;gt;true&amp;lt;/Rearrange&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;OptimizeImports&amp;gt;true&amp;lt;/OptimizeImports&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;Language id="yaml"&amp;gt;&#xD;
&amp;lt;Reformat&amp;gt;true&amp;lt;/Reformat&amp;gt;&#xD;
&amp;lt;/Language&amp;gt;&#xD;
&amp;lt;/profile&amp;gt;&lt;/RIDER_SETTINGS&gt;&lt;/Profile&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">TrashUpdaterCleanup</s:String> <s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">TrashUpdaterCleanup</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=customformat/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=customformat/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Persister/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Persister/@EntryIndexedValue">True</s:Boolean>

Loading…
Cancel
Save