问题标签 [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.

0 投票
1 回答
686 浏览

c# - 如何使用 Roslyn 独立分析从别名中获取类型

如果我在源代码中使用类型别名:

后来我提到了它的成员:

当我使用Roslyn分析语法树时,我将有一个SimpleMemberAccessExpression for Something,但不知道它只是DateTime的别名。

有没有办法知道Something是语义上的别名?我不想解析整个文件并跟踪所有别名。

0 投票
1 回答
186 浏览

roslyn - 在 DiagnosticAnalyzer 中获取项目引用的程序集

我正在编写代码分析,它应该检查我们的库是否正确使用。为此,我需要知道项目(=分析文档的父项目)引用了哪些程序集。在 CodeRefactoringProviders 中是可能的,因为它的上下文包含 Document 属性。从文档中我可以找到项目及其参考资料。

但我不知道如何从 CodeAnalysis 上下文(SyntaxNodeAnalysisContext,...)中获取信息是可能的吗?

0 投票
1 回答
107 浏览

c# - 替换不同类型的节点 - 移除包装块,只留下内部表达式

在 CodeFixProvider 我需要删除包装 if 条件(例如):

我只想留下调整后的内部表达:

一旦我尝试用 line-line 语句替换 'if-block' 的节点,就会抛出 'unable to cast' 异常。你知道正确的做法吗?

0 投票
1 回答
1107 浏览

c# - 在 StyleCop 分析器中配置排序规则以强制执行用户定义的成员顺序

是否可以配置 StyleCop 分析器,以便可以检查类中成员的“我的”顺序(与SA1201描述的不同)?也就是说,我希望将我的属性放在构造函数之上,而 SA1201 要求将它们放在构造函数之下。我不想禁用排序规则,因为我确实想坚持检查订单。

0 投票
5 回答
5463 浏览

c# - VS 项目参考因 GUID 的大小写敏感性而中断

自从升级到 VS 2015 以来,我的团队经历了随机的古怪事情,我确信这些事情现在正在 Microsoft 解决。一个非常烦人的问题是我们似乎丢失了项目引用,尤其是在分支之后。昨天我开始研究我们解决方案的一个新分支,结果发现类型无法识别,并且命名空间使用被引用为不必要的(因为它们用于突然变得无法识别的类型)。

项目中的引用没有显示任何表示引用有问题的图标,但只是为了看看它是否可以工作,我删除并重新添加了一个项目引用,这导致它的类型再次被识别。

当然,这更新了项目文件,所以我查看了所做的更改。无法检测到引用的项目与现在可以检测到的项目之间的唯一区别是 GUID 中的字母字符已从小写变为大写。例如:

旧的,损坏的参考:

新的固定参考:

我正在寻找发生这种情况的原因以及如何修复它,而无需手动删除和重新添加整个地方的引用(并且不必将所有项目文件 GUID 转换为大写)。

我应该注意,这些“损坏”的引用并没有破坏构建,它们只在错误列表中显示为 IntelliSense 错误,而不是构建错误。所以,引用并没有真正被破坏,它们只是破坏了 IntelliSense(可以说更糟?!)。

0 投票
0 回答
14 浏览

roslyn-code-analysis - 是否有用于自定义分析的 DiagnosticId 指南?

有了编写自定义代码分析的可能性,我想知道是否有任何关于诊断标识符的指南。

DiagnosticDescriptor的文档只提到它应该是唯一的,但是还有其他指导方针,例如如何为它们添加前缀?

0 投票
1 回答
1977 浏览

c# - Jenkins 的 Roslyn 分析器

我们在 Visual Studio 2015 中使用SonarLintStyleCop分析器。这些在开发过程中工作得很好,但想知道是否可以在 Jenkins 构建期间运行它们?

我见过 SonarLint.Runner,所以我假设这是可能的。

0 投票
1 回答
1826 浏览

c# - 使用 roslyn 替换所有类用法

我正在尝试做的事情: 假设我们Class1在 assembly中有一个类OldAssembly。该程序集被许多未知项目引用。我将把这个类移动到一个新的程序集中NewAssembly,最终名称和命名空间也会改变。现在必须调整所有用法。我想创建一个工具来自动化这些代码调整。

到目前为止我做了什么: 我玩过 roslyn Renamer

但它也重命名了源类。因此,我查看了Renamer代码并尝试对其进行调整以适应我的用例,但由于其中使用了一些内部组件而失败了。

问题: 将一个类从一个程序集移到另一个程序集后,如何自动调整代码。

0 投票
1 回答
165 浏览

c# - 代码分析器 - 删除节点失败无一例外

正如您可能已经猜到的那样,我正在学习有关 roslyn 的所有知识,尤其是作为代码分析器。

语法突出显示效果很好。但是,以下 - 这是我的代码操作 - 在删除节点时会以静默方式失败:

主题:

我觉得我错过了如何与 Roslyn 合作的“更大”图景,所以虽然这里的帮助会很棒,但我也喜欢一些对我有帮助的链接/资源。

我已经在这里上传了这个项目,虽然不是一个“最小”的例子,它很容易重现这个问题。上面的代码在CodeFixProvider.cs.

谢谢

0 投票
1 回答
494 浏览

c# - Roslyn TypeDeclarationSyntax、MethodDeclarationSyntax、FieldDeclarationSyntax 有共同的属性,但没有共同的基类或接口

我正在尝试做的事情:

我正在使用 roslyn 编写代码重构。我的目标是创建一个课程。所以我所做的基本上是删除所有私人员工并用throw new NotImplementedException().

我的问题是什么:

一切正常,但我最终得到了很多这样的代码重复:

原因是我需要使用一个属性Members,并且语法类没有通用的基类型或接口来声明Members. 我Body对所有这些共有的属性有同样的问题,但是没有共同的基础或共同的接口。

问题: API 设计是这样的有什么原因,还是我遗漏了什么?在这些和许多其他类似情况下,有什么模式可以避免重复。


更新 在 roslyn repo 中创建了一个问题:#10455