控制流图,Inter/Intra 使用 Roslyn 进行数据流分析,.NET 编译器平台

Control Flow Graph, Inter/Intra data flow analysis with Roslyn, .NET Compiler Platform

我了解到 Roslyn 不提供本机 CFG 实现,也不提供 public 数据流间或内部数据流分析。然而,这是一个基于 Roslyn RC2 的来源,它可能真的很旧。今天还是这样吗?

我正在尝试进行污点分析,即我应该能够在变量通过函数传递或分配给其他变量后对其进行跟踪。

任何帮助将不胜感激!谢谢!

从 1.2 开始,Roslyn 仅具有有限的内置数据流分析,以了解单个方法中一组跨度中使用的变量。这用于 "extract method" 重构以查看需要移动哪些变量。否则,如果你想做更大的事情,你仍然是一个人。

同时似乎有一个 public API 用于获取控制流图(目前处于预览状态)。 我找不到任何进一步的文档。

源代码:http://sourceroslyn.io/#Microsoft.CodeAnalysis/Operations/ControlFlowGraph.cs

单元测试中的示例用法:http://sourceroslyn.io/#Roslyn.Test.Utilities/Compilation/ControlFlowGraphVerifier.cs

GitHub 问题:https://github.com/dotnet/roslyn/issues/24104