Skip to content

Commit 8abe1f7

Browse files
committed
Refactor BaseFileSystemNodeAnalyzer
1 parent 0070c15 commit 8abe1f7

1 file changed

Lines changed: 28 additions & 15 deletions

File tree

System.IO.Abstractions.Analyzers/Analyzers/BaseFileSystemNodeAnalyzer.cs

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public abstract class BaseFileSystemNodeAnalyzer : BaseFileSystemAnalyzer
1111
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext,
1212
FileSystemContext fileSystemContext)
1313
{
14-
if (IsNotUsedSystemIo())
14+
if (DoesNotUsedSystemIo())
1515
{
1616
return;
1717
}
@@ -44,16 +44,26 @@ protected override void AnalyzeCompilation(CompilationStartAnalysisContext compi
4444

4545
protected abstract Type GetFileSystemType();
4646

47-
private bool IsNotUsedSystemIo() => typeof(Path).Namespace
48-
!= GetFileSystemType()
49-
.Namespace;
47+
private bool DoesNotUsedSystemIo()
48+
{
49+
var systemIoNamespace = typeof(Path).Namespace;
50+
51+
return systemIoNamespace != null
52+
&& !systemIoNamespace.Equals(GetFileSystemType()
53+
.Namespace);
54+
}
5055

5156
private bool IsTypesEquals(TypeInfo typeInfo)
5257
{
53-
var fileSystemType = GetFileSystemType();
58+
if (typeInfo.Type is null)
59+
{
60+
return false;
61+
}
62+
5463
var namespaceSymbol = typeInfo.Type.ContainingNamespace;
64+
var fileSystemType = GetFileSystemType();
5565

56-
return typeInfo.Type.Name == fileSystemType.Name
66+
return typeInfo.Type.Name.Equals(fileSystemType.Name, StringComparison.Ordinal)
5767
&& (namespaceSymbol.IsGlobalNamespace || namespaceSymbol.ToString() == fileSystemType.Namespace);
5868
}
5969

@@ -73,22 +83,25 @@ private static bool IsSymbolFromAbstractions(SymbolInfo symbolInfo)
7383
if (symbolInfo.Symbol is ISymbol symbol)
7484
{
7585
return IsSymbolFromAbstractions(symbol);
76-
} else if (symbolInfo.CandidateSymbols.Length > 0)
77-
{
78-
return symbolInfo.CandidateSymbols.All(IsSymbolFromAbstractions);
7986
}
8087

81-
return false;
88+
return symbolInfo.CandidateSymbols.Length > 0 && symbolInfo.CandidateSymbols.All(IsSymbolFromAbstractions);
8289
}
8390

8491
private static bool IsSymbolFromAbstractions(ISymbol symbol)
8592
{
86-
var namespaceSymbol
87-
= ((symbol as IPropertySymbol)?.Type ?? (symbol as IFieldSymbol)?.Type)?.ContainingNamespace
88-
?? (symbol as IMethodSymbol)?.ContainingNamespace;
93+
var namespaceSymbol = symbol switch
94+
{
95+
IPropertySymbol propertySymbol => propertySymbol.Type.ContainingNamespace,
96+
IFieldSymbol fieldSymbol => fieldSymbol.Type.ContainingNamespace,
97+
IMethodSymbol methodSymbol => methodSymbol.ContainingNamespace,
98+
var _ => null
99+
};
89100

90-
return namespaceSymbol != null
91-
&& !namespaceSymbol.IsGlobalNamespace
101+
return namespaceSymbol is
102+
{
103+
IsGlobalNamespace: false
104+
}
92105
&& namespaceSymbol.ToString()
93106
.StartsWith(Constants.FileSystemNameSpace, StringComparison.Ordinal);
94107
}

0 commit comments

Comments
 (0)