Преглед изворни кода

修复HotfixProjectFieldDeclarationAnalyzer (#367)

1. 修复第一个字段为const时,忽略其余字段检查的问题
2.添加对属性成员的限制 hotfix程序集中不能声明属性
susices пре 3 година
родитељ
комит
12c4a720a6
1 измењених фајлова са 14 додато и 8 уклоњено
  1. 14 8
      Share/Analyzer/Analyzer/HotfixProjectFieldDeclarationAnalyzer.cs

+ 14 - 8
Share/Analyzer/Analyzer/HotfixProjectFieldDeclarationAnalyzer.cs

@@ -47,24 +47,30 @@ namespace ET.Analyzer
 
             foreach (ISymbol? memberSymbol in namedTypeSymbol.GetMembers())
             {
-                // 筛选出字段成员
-                if (!(memberSymbol is IFieldSymbol fieldSymbol))
+                // 筛选出属性成员
+                if (memberSymbol is IPropertySymbol propertySymbol)
                 {
-                    return;
+                    ReportDiagnostic(propertySymbol);
+                    continue;
                 }
 
-                // 允许声明Const字段
-                if (fieldSymbol.IsConst)
+                // 筛选出非Const字段成员
+                if (memberSymbol is IFieldSymbol fieldSymbol && !fieldSymbol.IsConst)
                 {
-                    return;
+                    ReportDiagnostic(fieldSymbol);
                 }
+            }
 
-                foreach (SyntaxReference? declaringSyntaxReference in fieldSymbol.DeclaringSyntaxReferences)
+            void ReportDiagnostic(ISymbol symbol)
+            {
+                foreach (SyntaxReference? declaringSyntaxReference in symbol.DeclaringSyntaxReferences)
                 {
-                    Diagnostic diagnostic = Diagnostic.Create(Rule, declaringSyntaxReference.GetSyntax()?.GetLocation(), fieldSymbol.Name);
+                    Diagnostic diagnostic = Diagnostic.Create(Rule, declaringSyntaxReference.GetSyntax()?.GetLocation(), symbol.Name);
                     context.ReportDiagnostic(diagnostic);
                 }
             }
         }
+
+        
     }
 }