- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在许多不同的情况下,我使用 Roslyn 在 SemanticModel
中搜索一个符号,但找不到它。
var sm = compilation.GetSemanticModel(tree);
sm.GetSymbolInfo(node);
sm.GetDeclaredSymbol(node);
所以我想检查语义模型。
SemanticModel
中的完整类型列表?SemanticModel
中可用的所有内容?无需搜索特定符号。SemanticModel
的可视化工具?这在调试时会有帮助。
按照 Dudi Keleti 的方法,这段代码非常有效:
return tree.GetRoot().DescendantNodesAndSelf()
.Where(node => node as ClassDeclarationSyntax != null || node as InterfaceDeclarationSyntax != null)
.Select(node => new KeyValuePair<SyntaxNode, ISymbol>(node, model.GetSymbolInfo(node).Symbol ?? model.GetDeclaredSymbol(node)));
最佳答案
我不知道可视化工具,但你可以这样做:
static IEnumerable<ISymbol> GetTeeSymbols(SyntaxTree tree, SemanticModel model)
{
return tree.GetRoot().
DescendantNodesAndSelf().
Select(node => model.GetSymbolInfo(node).Symbol ?? model.GetDeclaredSymbol(node)).Where(info => info != null);
}
您可以将其作为树的扩展方法并发送语义模型或语义模型的扩展并发送 IEnumerable<SyntaxTree>
而不是逐一检查并执行 LINQ
我不知道它是否完美,但它可以让您了解发生了什么。在我的编译中它看起来像这样:
有了它,您可以构建自己的可视化工具,或者创建一个 VISX 以在 Visual Studio 中显示它。
更新
写完之后,我找到一个sample code in Roslyn在编译中枚举符号。
同时检查 GetAllFieldAndMethodSymbolsInACompilation和 TraverseAllExpressionsInASyntaxTreeUsingAWalker .请记住,对于完整的解决方案,您还需要跟踪引用的程序集。
关于c# - 有没有办法在 Roslyn 中可视化 SemanticModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40820584/
在某些情况下,当我尝试获取语法节点的 ISymbol 时,使用 SemanticModel.GetSymbolInfo 会失败(获取 null),但使用 SemanticModel.GetDeclar
您好,我根据 java-web-plugin 3.5 的一些检查(依赖于 java-checks 3.5 的 pom)为 Sonar 5.1.2 编写了自己的插件,当我尝试对项目运行分析时出现错误:
我正在研究 Roslyn extension警告未 protected .Value访问 Nullable值(value)观。 这提供了以下行为: 这个扩展已经可以工作了,但是测试访问是否“安全”的代
从我刚刚创建的 ClassDeclaration 中获取 ISymbol 的最简单方法是什么? 考虑以下代码: AdhocWorkspace workspace = new AdhocWorkspac
在许多不同的情况下,我使用 Roslyn 在 SemanticModel 中搜索一个符号,但找不到它。 var sm = compilation.GetSemanticModel(tree); sm.
为了找到 ExpressionSyntax 实例的目标,我调用了 mySemanticModel.GetSymbolInfo(myExpressionSyntax)。 我有几个 SemanticMod
我在解决 Roslyn 中的某些类型时遇到问题。 大多数时候它按预期工作 但是在某些情况下,在某些文件中,某些类型无法解析。 这是我用来处理类型的代码: private string GetTypeN
我试图从 ObjectCreationExpressionSyntax 对象获取类型信息但失败了。 这是重现问题的示例(请参阅代码中的“ti.Type is null”): using Microso
我正在编写一个 Visual Studio 2015 扩展,它查看用户右键单击的类的内容。 我有 ProjectItem,但是如何从中获取 SemanticModel(和 SyntaxTree)? 我
我是一名优秀的程序员,十分优秀!