【问题标题】:How to generate custom StyleCop rule for C# - Conditional Compilation Preprocessor Directives如何为 C# 生成自定义 StyleCop 规则 - 条件编译预处理器指令
【发布时间】:2012-07-11 08:30:49
【问题描述】:
是否可以编写自定义 C# StyleCop 规则来评估条件编译预处理器指令,如 #if、#elif、#else、#endif?
我们正在一个需要我们使用条件编译符号的环境中进行开发,我想在此基础上添加我们的自定义编码约定。
这可以通过CsDocument.WalkDocument - 方法实现吗,还是我必须使用其他方法?
(FxCop 在这里无法使用,因为它适用于已编译的二进制文件)。
【问题讨论】:
标签:
c#
visual-studio-2010
c-preprocessor
stylecop
conditional-compilation
【解决方案1】:
是的,这是可能的,但 CsDocument.WalkDocument 重载将无济于事,因为预处理器指令仅表示为标记。它们没有对应的元素、语句或表达式。
要为条件编译指令编写规则,您需要检查 CsDocument.Tokens 集合。例如:
foreach (var directive in document.Tokens
.Where(t => t.CsTokenClass == CsTokenClass.ConditionalCompilationDirective)
.Cast<ConditionalCompilationDirective>())
{
// ...
}