如果有的话,通过诊断传递序列化数据的危险是什么

本文关键字:序列化 数据 危险 是什么 如果 诊断 | 更新日期: 2023-09-27 18:29:46

创建诊断允许您传入带有自定义数据的Dictionary<string, string>。之后,您可以在任何读取诊断的内容中使用它来提供上下文信息。在分析器和代码修复程序之间提供了一个典型的场景。

这种传递数据的方法有多可靠?是否需要特别考虑?

我记得几个月前关于这个主题的一次讨论,当时对可序列化性的担忧被认为是不提供这样一个功能的原因。我想到的另一件事是种族条件的可能性(根据分析器中过时的信息进行代码修复),但我质疑这种可能性有多大(或者是否可能)。当语法树更改时,应该取消诊断,尽管我不知道这是否会传播到代码修复。

举一个具体的例子:我正在做一些技巧来发现两件事:参数名称和位置。在分析器中,此位置用于显示波浪形下划线,而参数用于创建新调用。我没有两次计算参数名称和位置,而是通过properties参数,然后使用分析器中确定的位置从代码修复中检索受影响的节点。

如果有的话,通过诊断传递序列化数据的危险是什么

只要系统中存在诊断,属性就会得到维护。这样您就可以依赖于从分析器中输入的数据。

但话虽如此,如果可能的话,避免使用财产包对用户来说会更好。

这些预先计算的诊断是在没有用户交互的情况下生成的,并保存在整个解决方案的系统中,因此每个诊断的这些少量额外信息确实会累积起来。(基本消耗资源)

与诊断相比,修复程序只有在有明确的用户操作时才会运行,并且只运行少量的修复程序(通常适用于插入符号所在的行)

因此,在诊断中放入一些数据只是为了让修复程序更快一点(如果速度提高很重要,那么你可能有自己的理由),就像在每次系统重新启动时加载控制面板,以加快首次启动时间,以防你可能在关机前使用控制面板。