是否可以配置 StyleCop 分析器,以便可以检查类中成员的“我的”顺序(与SA1201描述的不同)?也就是说,我希望将我的属性放在构造函数之上,而 SA1201 要求将它们放在构造函数之下。我不想禁用排序规则,因为我确实想坚持检查订单。
问问题
1107 次
1 回答
0
以下只是介绍基本概念,但应该真正考虑查看 StyleCop-Analyzers 的作用。
使用Analyzer with Code Fix (NuGet + VSIX)
项目模板,我想出了一个分析器的初稿,它能够检测属性何时放置在方法之后。在 DiagnosticAnalyzer.cs 文件中实现的静态AnalyzeSymbol
方法(在项目创建时生成)的实现是:
private static void AnalyzeSymbol(SymbolAnalysisContext context)
{
var members = namedTypeSymbol.GetMembers();
var methods = from m in members
where (m.Kind == SymbolKind.Method &&
!m.IsImplicitlyDeclared && m.CanBeReferencedByName)
select m;
var properties = from m in members
where m.Kind == SymbolKind.Property
select m;
foreach (var p in properties)
{
foreach (var m in methods)
{
if (p.Locations.First().SourceSpan.Start > m.Locations.First().SourceSpan.Start)
{
// For all such symbols, produce a diagnostic.
var diagnostic = Diagnostic.Create(Rule, m.Locations[0], m.Name);
context.ReportDiagnostic(diagnostic);
}
}
}
}
于 2016-04-18T14:01:47.483 回答