diff --git a/src/BitMono.Core/Analyzing/SpecificNamespaceCriticalAnalyzer.cs b/src/BitMono.Core/Analyzing/SpecificNamespaceCriticalAnalyzer.cs index 33b209d5..bb4188b9 100644 --- a/src/BitMono.Core/Analyzing/SpecificNamespaceCriticalAnalyzer.cs +++ b/src/BitMono.Core/Analyzing/SpecificNamespaceCriticalAnalyzer.cs @@ -1,6 +1,5 @@ namespace BitMono.Core.Analyzing; -[SuppressMessage("ReSharper", "ConvertIfStatementToSwitchStatement")] public class SpecificNamespaceCriticalAnalyzer : ICriticalAnalyzer { private readonly ObfuscationSettings _obfuscationSettings; @@ -10,35 +9,32 @@ public SpecificNamespaceCriticalAnalyzer(IOptions obfuscati _obfuscationSettings = obfuscation.Value; } - public bool NotCriticalToMakeChanges(IMetadataMember member) + private static string? GetNamespace(IMetadataMember member) { - if (_obfuscationSettings.SpecificNamespacesObfuscationOnly == false) + if (member is TypeDefinition type) { - return true; + return type.Namespace?.Value; } - - var specificNamespaces = _obfuscationSettings.SpecificNamespaces!; - if (member is TypeDefinition type && type.HasNamespace()) + if (member is MethodDefinition method) { - if (specificNamespaces.Any(s => s.Equals(type.Namespace?.Value)) == false) - { - return false; - } + return method.DeclaringType?.Namespace?.Value; } - if (member is MethodDefinition method && method.DeclaringType?.HasNamespace() == true) + if (member is FieldDefinition field) { - if (specificNamespaces.Any(s => s.Equals(method.DeclaringType.Namespace?.Value)) == false) - { - return false; - } + return field.DeclaringType?.Namespace?.Value; } - if (member is FieldDefinition field && field.DeclaringType?.HasNamespace() == true) + return null; + } + + public bool NotCriticalToMakeChanges(IMetadataMember member) + { + if (!_obfuscationSettings.SpecificNamespacesObfuscationOnly) { - if (specificNamespaces.Any(s => s.Equals(field.DeclaringType.Namespace?.Value)) == false) - { - return false; - } + return true; } - return true; + + string[] specificNamespaces = _obfuscationSettings.SpecificNamespaces!; + string ns = GetNamespace(member) ?? string.Empty; + return Array.IndexOf(specificNamespaces, ns) != -1; } } \ No newline at end of file