FxCop中,查到有不合乎规则的代码,指定的错误代码所在的行号不正确,请问有高手知道怎么回事吗?
{
Method method = member as Method;
bool problem = false;
if (method != null)
{
//引数のMemberを定義しているクラスが、分析対象かどうか判定します。
InstructionList instructions = method.Instructions;
if (instructions.Length == 0)
return null;
//メンッド内で定義されたローカル変数のリスト取得
LocalList localList = instructions[0].Value as LocalList;
if (localList == null)
return null;
Local localTemp;
string strName = String.Empty;
string strType = String.Empty;
for (int index = 0, length = localList.Length; index < length; index++)
{
localTemp = localList[index];
strName = localTemp.Name.Name;
strType = localTemp.Type.FullName.ToString();
//“$”のを含むのは系統的な変数です。
if (!((strName.IndexOf('$') > -1) || (strName.IndexOf("local") > -1)))
{
if (strType.Equals(strTypeName))
{
problem = (strName.Length < 3 || !strName.Substring(0, 3).Equals(strPrefix));
}
if (problem)
{
Problems.Add(new Problem(GetResolution(strName)));
}
}
problem = false;
}
}
return Problems;
上面是我的代码,效验字符串前缀的正确性。
问题是:当某一个方法体内,多个变量定义错误时。这些错误提示的行号始终是第一个错误变量所在的行。
例如:
方法A
{
String aaa;
string bbb;
}
aaa的行号是3,bbb的行号是4。
当编译后提示的信息是:
aaa的行号是 3
bbb的行号是 3
都是3,请问这是怎么回事?如何解决呢?
我感觉是 Problems.Add(new Problem(GetResolution(strName)));有问题,但不知道如何解决。我用的fxcop1.32