@@ -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