首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Roslyn诊断分析器中检测隐式强制转换

在Roslyn诊断分析器中检测隐式强制转换
EN

Stack Overflow用户
提问于 2018-06-21 13:19:27
回答 1查看 362关注 0票数 3

我希望创建一个Roslyn诊断分析器来查找隐式强制转换,特别是如下所示的构造:

代码语言:javascript
复制
DateTimeOffset v = new DateTime();

这意味着我要么必须检测隐式强制转换,要么必须找到对DateTimeOffset.op_Implicit(DateTime)的引用。

但问题是,罗斯林诊断分析器的工作是语法,而不是语义模型。因此,我能想到的唯一方法就是找出所有可能有隐式强制转换的语法结构,并对它们进行语义分析。然而,这是相当棘手的,因为即使我能够创建一个可以生成隐式转换的语法结构的详尽列表,对语言的更改也可以很容易地引入新的语法结构。

我的问题是,是否有一种替代上述办法的办法。具体来说,是否有可能编写一个违背语义模型的罗斯林诊断分析器?,还是我遗漏了一些东西,是否有比我上面描述的更好的替代方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 13:47:41

我相信你在这里是不正确的:

但问题是,罗斯林诊断分析器的工作是语法,而不是语义模型。

您可以注册诊断分析器,以对抗语法、语义模型或更高级别的“操作”类型。例如,Kasey有一个示例来检测零长度数组的创建.

你可以打电话给AnalysisContext.RegisterSemanticModelActionAnalysisContext.RegisterOperationAction。您很可能希望使用一种操作类型的Conversion注册操作--这可能会删除大量的工作。

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

https://stackoverflow.com/questions/50969589

复制
相关文章

相似问题

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