【发布时间】:2017-08-16 20:02:12
【问题描述】:
我正在开发一个 Roslyn 分析器来检测特定方法的使用,method1。我想允许在for 和while 循环中使用此方法,并在代码中的所有其他情况下创建问题。
我该怎么做?我开发的代码到处都可以检测到method1。我现在希望每次找到该函数时,检查它是否在循环中,并且仅在它不在循环中时才生成错误。
【问题讨论】:
-
但是您希望允许的 嵌套 级别是多少?您的分析器应该在调用堆栈中走多远?如果你有一个调用链
methodN->method2->method1并且调用这个链的循环在methodN中怎么办?另外,想想你的代码在运行时和编译时的结构是不一样的。如果您在运行时将method1作为委托传递给另一个将其包装在循环中的方法会怎样?比如 LINQ 使用Func。
标签: c# roslyn roslyn-code-analysis