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

时间:2016-06-12 08:03:35

标签: c# reflection compilation lint

对于下面的课程:

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

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

}

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

我有MethodInfo method以及我想要查看的课程FieldInfo[] fields的所有字段但不知道如何从这里开始。从上面的示例中,它应该能够检测到我没有在方法体中为boolList分配任何内容。

1 个答案:

答案 0 :(得分:0)

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

然后我使用"({)(.*)(})"并选择第二组来消除类的括号,然后从中使用"{(.*?)}"并迭代每个方法的主体的匹配。 (我实际上并不关心方法的名称,我想检查整个文件)之后我逐行阅读方法的内容,并用&#39; =等字符拆分。 &#39;或者&#39;。&#39;