对于下面的类:
class A
{
private List<int> intList;
private List<bool> boolList;
public InitializeClass()
{
intList = new List<int>();
}
}
我想使用反射来编写各种 linter/post 编译器,以检查某个方法是否真的对类的字段有任何赋值。目的是自动检查我自己的错误。该类无法使用构造函数,因此我需要手动调用InitializeClass()
。
我已经想检查MethodInfo method
类FieldInfo[] fields
的所有字段,但不知道如何从这里开始。从上面的示例中,它应该能够检测到我没有在方法主体中为boolList
分配任何内容。
我最终使用正则表达式直接读取代码文件。该文件有一些约束,也就是说它可以包含无限的方法,但每个方法不能包含任何括号。(否,如果等)
然后我使用 "({)(.*)(})"
并选择第 2 组来消除类的括号,然后我使用 "{(.*?)}"
并遍历每个方法主体的匹配项。(实际上我不在乎方法的名称,我想检查整个文件)之后,我逐行读取该方法的内容,并用"="或"等字符拆分内容。