首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >罗斯林数据流分析. WrittenInside和位置字段的模糊值

罗斯林数据流分析. WrittenInside和位置字段的模糊值
EN

Stack Overflow用户
提问于 2014-09-02 17:35:39
回答 1查看 922关注 0票数 7

最近,我开始使用Roslyn提供的数据流分析API,并在WrittenInside字段和Locations字段中找到了一些模糊的值。

考虑以下主要方法中的代码片段

代码语言:javascript
运行
复制
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. }
  1. 如果在for循环节点上执行DFA,则生成的数据流分析对象永远不会将lcolSample[]在WrittenInside字段中显示为在for循环中写入的符号。原因是,它被声明在执行数据流分析的节点之外。但是,ReadInside字段显示了这个符号。是否有任何方法可以知道在给定节点内修改/写入的所有符号,即使它们是在执行DFA的节点之外声明的?
  2. 变量lintCount1编写两次(语句2和7),并读取两次。lintCount1上的Locations属性只显示声明它的位置(语句2)。有什么方法可以找到写lintCount1的所有位置吗?查找该符号的所有引用将给出使用该符号的所有位置,但我需要该符号被写入但不被读取的位置。

这是我在这个论坛上的第一个问题。如果以上所提供的信息不够,请询问其他细节。提前谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-11 16:15:20

数据流分析对象从不将lcolSample[]在WrittenInside字段中显示为在for循环中写入的符号

是的,因为该符号不是写在循环中的(即没有lcolSample = whatever )。由lcolSample符号表示的数组的一个元素是在循环中编写的,这是非常不同的。我不知道如何使用Roslyn的数据流分析找到这样的写。

lintCount1上的Locations属性只显示声明它的位置(语句2)。有什么方法可以找到写lintCount1的所有位置吗?

DataFlowAnalysis对象只给出符号,访问它们的Location没有多大意义(因为这个位置与数据流分析无关)。

在我看来,您的两个问题听起来都是合理的特性请求,您可能想让它们成为关于罗斯林回购

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25629159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档