它需要在包含俄语字符的字符串下划线。
我已经为 roslyn 和方法的属性编写了一个扩展,俄语文本带有下划线,但对于类和属性的属性,我不明白。
我的代码:1)发生初始化:
public override void Initialize(AnalysisContext context)
{
context.RegisterSymbolAction(AnalyzeRussianSymbols, SymbolKind.Parameter);
}
2)AnalyzeRussianSymbols:
public void AnalyzeRussianSymbols(SymbolAnalysisContext context)
{
CompilationUnitSyntax root = (CompilationUnitSyntax)context.Symbol.Locations[0].SourceTree.GetRoot();
AttributeListVirtualizationVisitor attributeArgument = new AttributeListVirtualizationVisitor();
attributeArgument.Visit(root);
CheckAttributes(attributeArgument, context);
}
3)检查属性:
private void CheckAttributes(AttributeListVirtualizationVisitor attributeArgument, SymbolAnalysisContext context)
{
foreach (AttributeArgumentListSyntax attributes in attributeArgument.AttributeArgumentsList)
{
foreach (AttributeArgumentSyntax attr in attributes.Arguments)
{
SyntaxKind syntaxKind = attr.Expression?.Kind() ?? SyntaxKind.None;
if(syntaxKind == SyntaxKind.StringLiteralExpression && Regex.IsMatch(attr.NormalizeWhitespace().Expression.ToString(), "[а-яА-ЯёЁ]"))
{
Diagnostic diagnostic = Diagnostic.Create(Rule, attr.GetLocation(), attr);
context.ReportDiagnostic(diagnostic);
}
}
}
}
在红色矩形中:当前字符串包含俄语字符
我需要帮助!
