是否可以配置StyleCop分析器,以便可以检查类中的“我的”成员顺序(与SA1201描述的内容不同)?即我想让我的属性在构造函数之上,而SA1201要求将它们放在构造函数之下。我不想禁用排序规则,因为我确实想坚持要检查订单。
答案 0 :(得分: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);
}
}
}
}