【发布时间】:2017-05-25 04:18:21
【问题描述】:
我正在尝试编写分析器,我需要使用 Roslyn 查找对某个字段所做的所有分配。
private async static Task<bool> VariableDoesNotMutate(SyntaxNodeAnalysisContext context, VariableDeclaratorSyntax firstVariable)
{
var variableSymbol = context.SemanticModel.GetDeclaredSymbol(firstVariable);
var references = await SymbolFinder.FindReferencesAsync(variableSymbol, context.GetSolution());
foreach (var reference in references)
{
//How do I check for assignment?
}
//need to filter by assignments
return references.Count() > 1;
}
我听说使用 symbolFinder 是正确的,但我不知道该怎么做。
符号查找器需要一个解决方案,我只能通过 hack 访问它,所以我假设还有另一种方法可以做到这一点。
问题:
当我尝试查找对变量的所有引用时,只返回声明,我没有找到任何其他引用,我该如何解决这个问题?
一旦我有了参考资料,如何确定它是否是作业?
【问题讨论】:
-
您可能在错误的
Solution实例中搜索。 -
@SLaks 当分析器没有公开的方法来查找解决方案时,我如何使用查找符号的所有分配?
-
出于性能原因,您不能/不应该这样做。