【问题标题】:Run Roslyn analyzers from a program从程序运行 Roslyn 分析器
【发布时间】:2019-03-25 12:19:18
【问题描述】:

需求背景:

我们为客户构建 api 库(用于 .Net、Java、C/C++ 和 Python),他们在这些库上构建应用程序。当我们更新我们的 api 库时,我们的客户面临着在他们的源中查找所需的更改以便能够使用新的 api 库的挑战。因此,我们计划构建一个可以在其源代码上运行的报告工具,并准确地告诉他们需要对代码进行哪些更改。

问题

目前只关注 .Net,我能想到的最简单的方法是使用内置的 Roslyn 分析器。想法是将项目引用更改为新的 api 库,然后在解决方案上运行分析器。

我遇到的问题是 MSBuild 命令行无法选择仅运行分析器(跳过构建)。然后我尝试使用代码调用分析器(这也是可取的),因为我添加了 nuget 包 Microsoft.CodeAnalysis.Analyzers、Microsoft.CodeAnalysis.CSharp。但是我无法获得有关如何使用这些软件包使用分析器的任何信息。

问题

  1. 是否可以从代码运行 Rosyln-Analyzers?
  2. 如果是,如何? (非常感谢示例代码)

【问题讨论】:

    标签: c# visual-studio roslyn code-analysis roslyn-code-analysis


    【解决方案1】:

    我认为你想要两件事之一:

    • 编写可自动修复代码以使用新 API 的分析器。
    • 编写一个独立的分析工具来生成报告。

    您可以随新版本的新 nuget 包一起提供的分析器,然后用户可以查看所有分析器警告并修复它们。您不需要运行它们,它们会在用户开始处理解决方案时运行。

    用户可以运行以生成报告的独立工具。如果你想要一个报告,那么你想要这样做而不是编写分析器

    我发现this series of blog posts 对了解分析器很有用

    【讨论】:

    • 我认为我不应该编写分析器,因为 Rosyln 分析器中已经存在规则。例如docs.microsoft.com/en-us/dotnet/csharp/language-reference/…docs.microsoft.com/en-us/dotnet/csharp/language-reference/…docs.microsoft.com/en-us/dotnet/csharp/language-reference/…。我希望使用这些规则来验证来源。
    • 您只想将警告视为这些数字的错误。见this
    • 其中2个是编译器错误,如果它们编译,那么它们会得到需要修复的错误......我不认为它们是roslyn代码分析器,它们只是编译器警告。我仍然认为您想编写一个独立的静态分析工具,他们针对他们的解决方案运行该工具,寻找不再存在的方法,并建议他们如何解决这些问题
    • 我知道这些是编译器警告/错误。但是 VS 甚至在没有构建的情况下显示它们,这就是我正在寻找的。关于如何实现的任何提示?
    • 我认为您可以使用独立工具来做到这一点。只需使用 roslyn 加载项目,然后编译并获取错误...
    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多