是否可以编写自定义 C# StyleCop 规则来评估条件编译预处理器指令,如#if、#elif、#else、#endif?
我们正在一个需要我们使用条件编译符号的环境中进行开发,我想在此基础上添加我们的自定义编码约定。
使用CsDocument.WalkDocument
- 方法可以做到这一点,还是我必须使用其他方法?
(FxCop 在这里不起作用,因为它适用于已经编译的二进制文件)。
是否可以编写自定义 C# StyleCop 规则来评估条件编译预处理器指令,如#if、#elif、#else、#endif?
我们正在一个需要我们使用条件编译符号的环境中进行开发,我想在此基础上添加我们的自定义编码约定。
使用CsDocument.WalkDocument
- 方法可以做到这一点,还是我必须使用其他方法?
(FxCop 在这里不起作用,因为它适用于已经编译的二进制文件)。
是的,这是可能的,但CsDocument.WalkDocument
重载无济于事,因为预处理器指令仅表示为标记。它们没有对应的元素、语句或表达式。
要为条件编译指令编写规则,您需要检查 CsDocument.Tokens 集合。例如:
foreach (var directive in document.Tokens
.Where(t => t.CsTokenClass == CsTokenClass.ConditionalCompilationDirective)
.Cast<ConditionalCompilationDirective>())
{
// ...
}