我最近开始使用Roslyn提供的数据流分析API,发现在WrittenInside字段和Locations字段中显示的值有点模棱两可。
考虑以下Main方法中的代码段
1. int[] lcolSample = new int[10] { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4};
2. for (int lintCount1 = 0; lintCount1 < 10; lintCount1++)
3. {
4. Prog1(lintCount1);
5. int[] lcolSample1 = new int[10] { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 };
6. lintCount3 = lintCount3 + 100;
7. lintCount1 = lintCount1 + 2;
8. lcolSample[lintCount1-1] = lcolSample1[lintCount1] + 100;
9. }
这是我在这个论坛上的第一个问题。如果以上提供的信息不足,请询问其他详细信息。提前致谢..
最佳答案
是的,因为该符号未写在循环内部(即那里没有lcolSample = whatever
)。由lcolSample
符号表示的数组元素被写入循环中,这是非常不同的。我不知道如何使用Roslyn的数据流分析来找到此类写入。
DataFlowAnalysis
对象仅为您提供符号,访问它们的Location
并没有多大意义(因为该位置与数据流分析无关)。
对我来说,您的两个问题听起来都像是合理的功能要求,您可能希望将它们设置为on the Roslyn repo。
关于c# - Roslyn数据流分析-WrittenInside和Locations字段的值不明确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25629159/