问题标签 [roslyn-code-analysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何使用 Roslyn 独立分析从别名中获取类型
如果我在源代码中使用类型别名:
后来我提到了它的成员:
当我使用Roslyn分析语法树时,我将有一个SimpleMemberAccessExpression for Something,但不知道它只是DateTime的别名。
有没有办法知道Something是语义上的别名?我不想解析整个文件并跟踪所有别名。
roslyn - 在 DiagnosticAnalyzer 中获取项目引用的程序集
我正在编写代码分析,它应该检查我们的库是否正确使用。为此,我需要知道项目(=分析文档的父项目)引用了哪些程序集。在 CodeRefactoringProviders 中是可能的,因为它的上下文包含 Document 属性。从文档中我可以找到项目及其参考资料。
但我不知道如何从 CodeAnalysis 上下文(SyntaxNodeAnalysisContext,...)中获取信息是可能的吗?
c# - 替换不同类型的节点 - 移除包装块,只留下内部表达式
在 CodeFixProvider 我需要删除包装 if 条件(例如):
我只想留下调整后的内部表达:
一旦我尝试用 line-line 语句替换 'if-block' 的节点,就会抛出 'unable to cast' 异常。你知道正确的做法吗?
c# - 在 StyleCop 分析器中配置排序规则以强制执行用户定义的成员顺序
是否可以配置 StyleCop 分析器,以便可以检查类中成员的“我的”顺序(与SA1201描述的不同)?也就是说,我希望将我的属性放在构造函数之上,而 SA1201 要求将它们放在构造函数之下。我不想禁用排序规则,因为我确实想坚持检查订单。
c# - VS 项目参考因 GUID 的大小写敏感性而中断
自从升级到 VS 2015 以来,我的团队经历了随机的古怪事情,我确信这些事情现在正在 Microsoft 解决。一个非常烦人的问题是我们似乎丢失了项目引用,尤其是在分支之后。昨天我开始研究我们解决方案的一个新分支,结果发现类型无法识别,并且命名空间使用被引用为不必要的(因为它们用于突然变得无法识别的类型)。
项目中的引用没有显示任何表示引用有问题的图标,但只是为了看看它是否可以工作,我删除并重新添加了一个项目引用,这导致它的类型再次被识别。
当然,这更新了项目文件,所以我查看了所做的更改。无法检测到引用的项目与现在可以检测到的项目之间的唯一区别是 GUID 中的字母字符已从小写变为大写。例如:
旧的,损坏的参考:
新的固定参考:
我正在寻找发生这种情况的原因以及如何修复它,而无需手动删除和重新添加整个地方的引用(并且不必将所有项目文件 GUID 转换为大写)。
我应该注意,这些“损坏”的引用并没有破坏构建,它们只在错误列表中显示为 IntelliSense 错误,而不是构建错误。所以,引用并没有真正被破坏,它们只是破坏了 IntelliSense(可以说更糟?!)。
roslyn-code-analysis - 是否有用于自定义分析的 DiagnosticId 指南?
有了编写自定义代码分析的可能性,我想知道是否有任何关于诊断标识符的指南。
DiagnosticDescriptor的文档只提到它应该是唯一的,但是还有其他指导方针,例如如何为它们添加前缀?
c# - 使用 roslyn 替换所有类用法
我正在尝试做的事情:
假设我们Class1
在 assembly中有一个类OldAssembly
。该程序集被许多未知项目引用。我将把这个类移动到一个新的程序集中NewAssembly
,最终名称和命名空间也会改变。现在必须调整所有用法。我想创建一个工具来自动化这些代码调整。
到目前为止我做了什么:
我玩过 roslyn Renamer
:
但它也重命名了源类。因此,我查看了Renamer
代码并尝试对其进行调整以适应我的用例,但由于其中使用了一些内部组件而失败了。
问题: 将一个类从一个程序集移到另一个程序集后,如何自动调整代码。
c# - 代码分析器 - 删除节点失败无一例外
正如您可能已经猜到的那样,我正在学习有关 roslyn 的所有知识,尤其是作为代码分析器。
语法突出显示效果很好。但是,以下 - 这是我的代码操作 - 在删除节点时会以静默方式失败:
主题:
我觉得我错过了如何与 Roslyn 合作的“更大”图景,所以虽然这里的帮助会很棒,但我也喜欢一些对我有帮助的链接/资源。
我已经在这里上传了这个项目,虽然不是一个“最小”的例子,它很容易重现这个问题。上面的代码在CodeFixProvider.cs
.
谢谢
c# - Roslyn TypeDeclarationSyntax、MethodDeclarationSyntax、FieldDeclarationSyntax 有共同的属性,但没有共同的基类或接口
我正在尝试做的事情:
我正在使用 roslyn 编写代码重构。我的目标是创建一个课程。所以我所做的基本上是删除所有私人员工并用throw new NotImplementedException()
.
我的问题是什么:
一切正常,但我最终得到了很多这样的代码重复:
原因是我需要使用一个属性Members
,并且语法类没有通用的基类型或接口来声明Members
. 我Body
对所有这些共有的属性有同样的问题,但是没有共同的基础或共同的接口。
问题: API 设计是这样的有什么原因,还是我遗漏了什么?在这些和许多其他类似情况下,有什么模式可以避免重复。
更新 在 roslyn repo 中创建了一个问题:#10455