C# 反射检查字段赋值的方法体

C# reflection to check method body of assignment to fields

下面的class:

class A
{
    private List<int> intList;
    private List<bool> boolList;

    public InitializeClass()
    {
        intList = new List<int>();
    }

}

我想使用反射来编写一个 linter/post 编译器,以检查某个方法是否真的对 class' 字段进行了任何赋值。目的是自动检查我自己的错误。 class 不能使用构造函数,所以我需要手动调用 InitializeClass()

我已经想检查 MethodInfo method 和 class FieldInfo[] fields 的所有字段,但不知道如何从这里开始。从上面的例子中,它应该能够检测到我没有在方法体中为boolList分配任何东西。

我最终使用正则表达式直接读取了代码文件。 该文件有一些限制,即它可以包含无限的方法,但每个方法不能包含任何括号。 (没有如果等)

然后我使用 "({)(.*)(})" 并选择第二组来消除 class 的括号,然后我使用 "{(.*?)}" 并循环匹配每个方法的主体。 (实际上我不关心方法的名称,我想检查整个文件)之后我逐行读取方法的内容并用'='或'.'等字符拆分内容