我有一个表示 C# 代码的数据结构,如下所示:
class Namespace:
string Name;
List<Class> Classes;
class Class:
string Name;
List<Property> Properties;
List<Method> Methods;
List<Method> Constructors;
List<Field> Fields;
List<Class> InnerClasses;
Class Parent;
List<Interface> Implements;
...我正在使用简单的词法分析器/解析器组合构建它。我需要遍历树并应用大量规则(超过 3000 条)。规则在遇到树中不同(且相当复杂)的模式时运行。例如,当一个类仅在同一个程序集中实现接口时,就会运行一条规则。
我最初的幼稚实现迭代每个规则,然后每个规则遍历树以查找其特定模式。当然,这需要相当多的时间,即使是少量的源代码。
我想这可以比作防病毒软件的工作原理,识别大量二进制代码上的复杂模式。
你会如何建议使用这种软件?
EDT:只是想补充一下:不,我不会重新实现 FxCop。
谢谢