问题标签 [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 回答
290 浏览

c# - 从 Roslyn API 中提取代码作为纯字符串

我们的目标是使用 Roslyn 为 C# 类构建一个玩具抽象语法树。我们只想展示一个类的基本结构,而不是遍历整个 AST。例如(取自 MSDN):

让我们只考虑属性Hours;我们只对提取修饰符 ( public)、返回类型 ( double)、标识符 ( Hours) 的标记感兴趣,而对于两个访问器的主体,我们想直接将其提取为String.

但是,当我们通过 roslyn(显示在屏幕转储中)时,当我们获取访问器的主体时,我们没有找到代表整个字符串的字段。实现这一目标的正确方法是什么?

0 投票
1 回答
848 浏览

c# - Roslyn - 抛出构建错误

查看 Roslyn 的文档,我找不到任何关于构建失败的信息。我目前已经构建了一个分析器工具,它将查看方法是否缺少标记,并通知开发人员建议添加此标记。但是我想要做的是,如果他们尝试构建项目,则能够使构建失败。

我在网上看到了开发人员一直在使用的地方:CodeIssue但我认为这行不通。

这类似于 stylecop 在构建失败时的工作方式。

有没有人找到任何可以返回构建失败并出现错误的示例/资源?

0 投票
1 回答
587 浏览

c# - Roslyn,在代码修复后无法让提供商更新解决方案

我创建了一个分析器,它将检测一个方法是否在 xml 中不包含<createddate>标签,以及一个将注入此标签的提供程序。它工作正常并插入标签,但即使规则已修复,它仍然返回构建错误。我确实认为我可能需要使用语义模型?

这就是我所拥有的:CodeFixProvider.cs

和 DiagnosticAnalyzer.cs

当标签出现在 xml 中时,关于如何让构建通过的任何想法?似乎它并没有真正更新解决方案?

0 投票
7 回答
11785 浏览

c# - CSharpAddImportCodeFixProvider 遇到错误并已被禁用

我让我的电脑为我重新成像。我的计算机上安装了 Visual Studio 版本 14.0.25123.00 Update 2。当我尝试使用 VS intellisense 引用另一个项目时出现此错误。

CSharpAddImportCodeFixProvider 遇到错误并已被禁用

我有两个项目。其中之一使用命名空间ProjectName.Web。而另一个项目使用ProjectName.Web.Controllers. 提供者在我引用时崩溃ProjectName.Web.Controllers,我相信是因为它是作为一个项目设置的。知道如何解决这个问题吗?

0 投票
1 回答
1834 浏览

c# - 使用 Roslyn CodeFixProvider 向方法添加参数

我正在编写一个Roslyn 代码分析器,我想确定一个async方法是否采用 a CancellationToken,然后建议一个添加它的代码修复:

我已DiagnosticAnalyzer通过检查 连接正确报告诊断methodDeclaration.ParameterList.Parameters,但我找不到用于将 a 添加ParamaterParameterList内部的 Roslyn API CodeFixProvider

这是我到目前为止所得到的:

如何正确更新方法声明并返回更新的Document?

0 投票
1 回答
1725 浏览

c# - 使用 Roslyn CodeAnalyzer 将命名空间添加到类

Piggy backing off使用 Roslyn CodeFixProvider 将参数添加到方法中

我正在努力创建一个CodeFixProvider确保所有异步方法都采用的CancellationToken

我可以将参数添加到方法中,但我必须使用Type.FullName. 相反,我想System.Threading在类文件的顶部添加一个 using 语句,这样该方法就不需要使用完整的命名空间。换句话说:

如何将using语句添加到 a 中Document

我尝试了几种方法,但是当我替换SyntaxTree引用中的多个节点时它会丢失(因为树是不可变的并且在每次更改时都会重建)。

我能够使用下面的代码使其部分工作,但这仅在填充属性时才有效,当 using 语句位于命名空间之后CompilationUnitSyntax.Using时,情况并非如此。这也依赖于文件中至少有一个语句。 using

有一个更好的方法吗?

0 投票
1 回答
441 浏览

c# - 从 HandleTypeDeclaration(...) 中的 SyntaxNodeAnalysisContext 获取封闭类型

我的分析仪我有以下注册:

HandleTypeDeclaration我想访问分析器当前正在处理的类型,以检查该类型是否由我想用来标记不应分析的类型的某个属性归因(如在这个问题中)。

在我的本地窗口中,我看到SyntaxNodeAnalysisContext context有一个名为的属性ContainingSymbol,但是该成员没有出现在 Intellisense 中。我想出了猜测var x = ...,但它总是等价的吗?我怎样才能ContainingSymbol访问context?这是获得封闭类型的正确方法吗?

当地人窗口

0 投票
1 回答
519 浏览

c# - 在 SyntaxTreeAnalysisContext 上获取语义模型

我得到了 aSyntaxTreeAnalysisContext context但我需要的是 aSyntaxNodeAnalysisContext及其SemanticModel属性,以便随后上升到作为类声明的父节点,然后检查在该类型上放置了哪些属性。

有没有办法从SyntaxTreeAnalysisContextSyntaxNodeAnalysisContext

(编辑)举个例子:我想增强一些规则(它们都使用 ; 的ReportDiagnostics方法,SyntaxTreeAnalysisContext例如SA1027从 StyleCop 分析器中正确使用选项卡),以便我可以在封闭类型上放置一个属性并检测它的存在和然后省略报告诊断,如

0 投票
0 回答
131 浏览

c# - 如何在 Roslyn 的整个解决方案中找到特殊文件?

我正在编写Roslyn的特定规则。

在此规则中,分析器正在解析方法声明及其在整个解决方案中的引用SymbolFinder

我的一个要求是找到一种方法来理解解决方案 [有多个项目] 是 Asp.Net Webform 或 Roslyn 的 Asp.MVC。

基于我们的项目,为此,我需要在整个解决方案中找到一个名为“Web.SiteMap”的文件,

如果这个文件存在,我可以理解这个项目是 Webform 类型,否则是 MVC。

我在徘徊我怎么能在 C# 中由 Roslyn 做到这一点?

0 投票
1 回答
289 浏览

c# - 在不构建解决方案的情况下运行 StyleCopAnalyzers

我想使用 StyleCopAnalyzers https://github.com/DotNetAnalyzers/StyleCopAnalyzers在我的代码中查找 StyleCop 违规。但是,如果不构建整个解决方案,我找不到运行它们的方法。这甚至可能吗?