FxCop,查找";如果Else";声明
本文关键字:quot Else 声明 如果 FxCop 查找 | 更新日期: 2023-09-27 18:00:51
我正在使用FxCop并编码以下内容:
public override void VisitBinaryExpression(BinaryExpression binaryExpression)
{
if (binaryExpression != null)
{
if (binaryExpression.Operand1 is MethodCall || binaryExpression.Operand2 is MethodCall)
{
Problem p = new Problem(GetResolution(null), binaryExpression);
this.Problems.Add(p);
}
}
base.VisitBinaryExpression(binaryExpression);
}
然而,加法也被认为是二进制表达式。我正在尝试阻止:
if ( myFunc()){
// cool code
}
用这个替代:
bool b = myFunc();
if ( b){
// cool code
}
如何在FxCop中找到if-else语句并确定其中的表达式没有任何函数调用?
您需要查找Branch节点类型,然后查看条件属性。
在创建规则时,我发现一个非常宝贵的工具是使用这里的内省器。它允许您浏览代码树,在执行过程中显示注释类型和属性。创建一个包含if语句的程序,然后展开直到看到,然后查看应该检查的属性。
我会覆盖visit分支方法,设置一个bool,然后访问"条件节点",然后重置它。然后,在您的visitbinary中,只有在设置了布尔(即,您处于分支语句的条件下(时,才能应用您的规则。