Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Roslyn:正在检查未初始化的局部变量_C#_.net_Roslyn_Code Analysis - Fatal编程技术网

C# Roslyn:正在检查未初始化的局部变量

C# Roslyn:正在检查未初始化的局部变量,c#,.net,roslyn,code-analysis,C#,.net,Roslyn,Code Analysis,使用Roslyn,如何检查C#变量是否未初始化?e、 g.假设我有以下代码: void M() { CancellationToken l1; N(); } 我的ILocalSymbol对应于l1。如何检查此变量是否在语法树中的特定位置初始化,例如,对应于N()的文本中的索引 编辑:如果该方法也扩展到参数符号,例如 void M(out CancellationToken p1) { N(); // How do I tell p1 is uninitialized h

使用Roslyn,如何检查C#变量是否未初始化?e、 g.假设我有以下代码:

void M()
{
    CancellationToken l1;
    N();
}
我的
ILocalSymbol
对应于
l1
。如何检查此变量是否在语法树中的特定位置初始化,例如,对应于
N()的文本中的索引

编辑:如果该方法也扩展到参数符号,例如

void M(out CancellationToken p1)
{
    N(); // How do I tell p1 is uninitialized here?
}

编辑:根据Roslyn团队中一些人的建议,我尝试了数据流分析API:。但是,它不起作用。我试过
!analysis.DataFlowsIn.包含(符号)
以及
!analysis.AlwaysAssigned.Contains(symbol)
(其中
analysis
是一个
DataFlowAnalysis
对象),但它们都给出了错误否定,表示变量未初始化,而变量未初始化。

什么意思?如何检查?我的意思是我可以看一下,告诉你
l1
是未初始化的。或者运行编译器,看看它是否抛出错误…?@ErikPhilips我问的是Roslyn,一个C#静态分析工具。你试过数据流分析API吗?你有问题吗?如果是,请询问有关API的更具体问题。如果没有,请尝试数据流分析API,看看您喜欢它。@EricLippert查看我更新的帖子。既然你有Roslyn的专业知识,你能帮我吗?如果API给出了错误的否定,并且你正确地使用了它,那么这就是实现中的一个bug;和Roslyn团队讨论一下。我已经五年多没在那里工作了。