gpt4 book ai didi

stack-overflow - 使用 FxCop Introspection 进行代码分析的无限循环

转载 作者:行者123 更新时间:2023-12-03 22:44:10 25 4
gpt4 key购买 nike

我正在尝试编写自定义 FxCop 代码分析规则这将警告开发人员不要使用包含太深嵌套代码块的方法,并将敦促他们重构困惑局面。

例如。我正在努力避免以下情况:

if(condition)
{
foreach(var item in items)
{
if(anotherCondition)
{
for(var product in item.Products)
{
// even more nested statement blocks...
}
}
}
}

当我重写 VisitBlock(Block block) 方法时出现计算器溢出
计算 block 的深度,因为显然,有一个循环引用从 block 的属性之一到 block 本身。即对于某些 i 以下内容为真:block.Statements[i] == block

为什么会存在这样的循环引用?如何避免?谢谢!

最佳答案

经过更多的研究,我发现我实际上有两个主要问题

  1. VisitXXX 方法不访问源代码的抽象语法树中的节点但实际上访问生成的 IL 中的节点。只需比较每个方法生成的 IL 指令以及每个 method.Body.
    生成的语句我想知道如果 FxCop 我们能取得什么成就可以为我们提供一个真正的 AST 访问者吗?
  2. 回答我最初的问题,防止开发人员编写过多的嵌套代码块,我们应该自己扫描方法代码,我的意思是,取出method.BodySourceContext属性中的起始行和结束行,并保留每一个的轨道'{' 和 '}' 我们找到了。 “{”的递增计数器和“}”的递减计数器。这应该行得通,对吧?

关于stack-overflow - 使用 FxCop Introspection 进行代码分析的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4951338/

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