1

是否可以编写自定义 C# StyleCop 规则来评估条件编译预处理器指令,如#if、#elif、#else、#endif

我们正在一个需要我们使用条件编译符号的环境中进行开发,我想在此基础上添加我们的自定义编码约定。

使用CsDocument.WalkDocument- 方法可以做到这一点,还是我必须使用其他方法?

(FxCop 在这里不起作用,因为它适用于已经编译的二进制文件)。

4

1 回答 1

3

是的,这是可能的,但CsDocument.WalkDocument重载无济于事,因为预处理器指令仅表示为标记。它们没有对应的元素、语句或表达式。

要为条件编译指令编写规则,您需要检查 CsDocument.Tokens 集合。例如:

foreach (var directive in document.Tokens
                             .Where(t => t.CsTokenClass == CsTokenClass.ConditionalCompilationDirective)
                             .Cast<ConditionalCompilationDirective>())
{
    // ...
}
于 2012-07-12T12:13:09.143 回答