Roslyn - 动态(运行时)流
Roslyn - dynamic (runtime) flow
我开始玩 Roslyn。解析代码和进行静态分析相对容易。
不知能否用于运行时分析?我想调用一个带参数的方法并检查执行了哪些分支。换句话说,我需要一个运行时执行计划。
Roslyn 可以做到这一点吗?
我不知道最好的解决方案是什么,在大多数情况下我会遵从 SLaks 的任何建议。
然而...
如果您想对 Roslyn 执行此操作,当然可以。事实上,在我的公司做了类似的事情(我们将单元测试映射到它们调用的方法)。
下面是我们方法的高级概述。
重写解决方案中的每个函数,以便在某些全局静态 lookup/data-structure 中命中时进行记录。您可以一次遍历每个文件并对每个文件使用 CSharpSyntaxRewriter
。 (在你的情况下,你将在分支或逐行的基础上重写)
运行 每个单元一次测试一个单元,通过分析您的全局查找,看看得到什么 运行。
汇总所有单元测试的结果以了解完整的代码覆盖率。
我开始玩 Roslyn。解析代码和进行静态分析相对容易。
不知能否用于运行时分析?我想调用一个带参数的方法并检查执行了哪些分支。换句话说,我需要一个运行时执行计划。 Roslyn 可以做到这一点吗?
我不知道最好的解决方案是什么,在大多数情况下我会遵从 SLaks 的任何建议。
然而...
如果您想对 Roslyn 执行此操作,当然可以。事实上,在我的公司做了类似的事情(我们将单元测试映射到它们调用的方法)。
下面是我们方法的高级概述。
重写解决方案中的每个函数,以便在某些全局静态 lookup/data-structure 中命中时进行记录。您可以一次遍历每个文件并对每个文件使用
CSharpSyntaxRewriter
。 (在你的情况下,你将在分支或逐行的基础上重写)运行 每个单元一次测试一个单元,通过分析您的全局查找,看看得到什么 运行。
汇总所有单元测试的结果以了解完整的代码覆盖率。