gpt4 book ai didi

.net - 如何使用 FxCop 自定义规则验证 DataReader 是否实际关闭?

转载 作者:行者123 更新时间:2023-12-02 05:14:11 25 4
gpt4 key购买 nike

我已经为 FxCop 1.36 编写了几个自定义规则。我已经编写了代码来查找打开的 DataReader 是否关闭的天气。但它不会检查哪个 DataReader 对象正在调用 Close()方法所以我不能确定所有打开的 DataReader 对象是否都关闭了!!

第二:如果我是“if/else”中的 DataReader

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

在这种情况下,它将搜索 2 个要关闭的 DataReader 对象。

我把我的代码放在更清晰的地方。
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;
}

最佳答案

使用 FxCop 这实际上非常困难(如果不可能的话)。当微软想为 VS2010 的 FxCop 添加一些安全分析规则时,他们也发现了这一点。问题是 FxCop 的数据流分析不够好。出于这个原因,微软构建了一个新的分析引擎,实际上可以做到这一点。它被称为 Phoenix ,但我只有 Visual Studio 2010 Ultimate 版包含此引擎(没有可用的免费版本)。阅读更多相关信息 here .

关于.net - 如何使用 FxCop 自定义规则验证 DataReader 是否实际关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2408546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com