datareader.close is called in if - else branching. How to validate datareader is actually closed usi

Posted by tanmay on Stack Overflow See other posts from Stack Overflow or by tanmay
Published on 2010-03-09T11:14:28Z Indexed on 2010/03/09 11:21 UTC
Read the original article Hit count: 276

Filed under:
|
|

Hi, I have written couple of custom rules in for fxcop 1.36. I have written a code to find weather opened datareader is closed or not. But it does not check which datareader object is calling the close() method so I can't be sure if all opened datareader objs are closed!!

2nd: if I am using data reader in IF else like

if 1=2
 dr = cmd.executeReader();
else
 dr = cmd2.execureReader();
end if

in this case it will search for 2 datareader objects to be closed..

I am putting my code for more clarity.

public override ProblemCollection Check(Member member)
        {
            Method method = member as Method;
            int countCatch =0;
            int countErrLog = 0;
            Instruction objInstr = null;
            if (method != null)
            {
                for (int i = 0; i < method.Instructions.Count; i++)
                {
                    objInstr = method.Instructions[i];
                    if (objInstr.Value != null)
                    {
                        if (objInstr.Value.ToString().Contains("System.Data.SqlClient.SqlDataReader"))
                        {
                                countCatch += 1;
                        }
                        if (countCatch>0)
                        {
                            if (objInstr.Value.ToString().Contains("System.Data.SqlClient.SqlDataReader.Close"))
                            {          
                                countErrLog += 1;
                            }
                        }
                    }
                }
            }
            if (countErrLog!=countCatch)
            {
                Resolution resolu = GetResolution(new string[] { method.ToString() });
                Problems.Add(new Problem(resolu));
            }
            return Problems;

Thanks and regards, Tanmay.

© Stack Overflow or respective owner

Related posts about fxcop

Related posts about .NET